1 #include<stdio.h> 2 #include<stdlib.h> 3 #define N sizeof(link) 4 typedef struct lin 5 { 6 struct lin *next; 7 int num; 8 char name[20]; 9 char sex; 10 int age; 11 }link; 12 void print(link *head) 13 { 14 link *p; 15 p=head; 16 printf("打印数据如下: "); 17 while(p) 18 { 19 printf("%d %s %c %d ",p->num,p->name,p->sex,p->age); 20 p=p->next; 21 } 22 } 23 int n; 24 link *creat(void) 25 { 26 link *head,*p,*s; 27 p=s=(link *)malloc(N); 28 printf("请输入输数据: "); 29 scanf("%d %s %c %d",&p->num,p->name,&p->sex,&p->age); 30 head=p; 31 n=0; 32 while(p->num!=0) 33 { 34 n++; 35 if(n!=1)s->next=p; 36 s=p; 37 p=(link*)malloc(N); 38 printf("请输入数据1: "); 39 scanf("%d %s %c %d",&p->num,p->name,&p->sex,&p->age); 40 } 41 s->next=NULL; 42 return(head); 43 } 44 link *del(link *head,int a) 45 { 46 link *p,*p1,*s; 47 for(p=p1=head;p;) 48 { 49 if(p->age==a) 50 if(p==head) 51 { 52 s=p; 53 head=p=p->next; 54 free(s); 55 } 56 else 57 { 58 p1->next=p->next; 59 s=p; 60 p=p->next; 61 free(s); 62 63 } 64 else 65 { 66 p1=p; 67 p=p->next; 68 } 69 } 70 return(head); 71 } 72 int main() 73 { 74 link *head,*p; 75 int a; 76 head=creat(); 77 printf("打印处理前的数据: "); 78 print(head); 79 printf("请输入年龄: "); 80 scanf("%d",&a); 81 p=del(head,a); 82 printf("打印处理后的数据: "); 83 print(p); 84 return 0; 85 }
测试结果:
请输入输数据: 101 Li F 15 请输入数据1: 102 Wang M 18 请输入数据1: 103 Sun F 19 请输入数据1: 104 CH M 15 请输入数据1: 105 QIn F 20 请输入数据1: 106 Kun F 21 请输入数据1: 107 Jun M 15 请输入数据1: 108 Xun F 22 请输入数据1: 109 Liu M 15 请输入数据1: 0 0 0 0 打印处理前的数据: 打印数据如下: 101 Li F 15 102 Wang M 18 103 Sun F 19 104 CH M 15 105 QIn F 20 106 Kun F 21 107 Jun M 15 108 Xun F 22 109 Liu M 15 请输入年龄: 15 打印处理后的数据: 打印数据如下: 102 Wang M 18 103 Sun F 19 105 QIn F 20 106 Kun F 21 108 Xun F 22 Press any key to continue