📄 11_16.cpp
字号:
#include "stdio.h"
#include "string.h"
#include "malloc.h"
typedef struct person
{
char name[31];
int age;
char address[101];
struct person *next;
} Person;
Person *createLink();
void insertANode(Person **LinkHead, Person *pt);
void printLink(Person *pt);
void distroyLink(Person *LinkHead);
int main(void){
Person* LinkHead;
LinkHead=createLink();
printLink(LinkHead);
distroyLink(LinkHead);
return 0;
}
Person *createLink(){
Person *LinkHead = NULL, *pt;
int count;
int i;
printf("input count:");
scanf("%d", &count);
printf("input name age address:\n");
for(i=0; i<count; i++) {
pt= (Person *)malloc(sizeof(Person));
scanf("%s %d %s", pt->name, &pt->age, pt->address);
insertANode(&LinkHead, pt);
}
return LinkHead;
}
void insertANode(Person **LinkHead, Person *pt) {
Person *p1, *p2;
if(NULL == *LinkHead) {
*LinkHead = pt;
pt->next = NULL;
}
else {
p1 = *LinkHead;
while(NULL != p1 && strcmp(pt->name, p1->name) > 0) {
p2= p1;
p1= p1->next;
}
if(p1 == *LinkHead) {
*LinkHead = pt;
pt->next = p1;
}
else if(NULL == p1) {
p2->next = pt;
pt->next = NULL;
}
else {
p2->next = pt;
pt->next = p1;
}
}
return;
}
void printLink(Person *pt)
{
while(NULL!=pt) {
printf("%-30s, %4d, %s\n", pt->name, pt->age, pt->address);
pt = pt->next;
}
}
void distroyLink(Person *LinkHead)
{
Person *pt;
int i=0;
pt=LinkHead;
while(NULL != pt) {
LinkHead = LinkHead->next;
free(pt);
printf("free node:%d\n", i++);
pt =LinkHead;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -