输入n个整数,先按照数据输入的顺序建立一个带头结点的单链表,再输入一个数据m,将单链表中的值为m的结点全部删除。分别输出建立的初始单链表和完成删除后的单链表。
Input
第一行输入数据个数n;
第二行依次输入n个整数;
第三行输入欲删除数据m。
Output
第一行输出原始单链表的长度;
第二行依次输出原始单链表的数据;
第三行输出完成删除后的单链表长度;
第四行依次输出完成删除后的单链表数据。
Sample Input
10
56 25 12 33 66 54 7 12 33 12
12
Sample Output
10
56 25 12 33 66 54 7 12 33 12
7
56 25 33 66 54 7 33
1 #include <stdio.h> 2 #include <stdlib.h> 3 typedef struct Lnode{ 4 int data; 5 struct Lnode *next; 6 }Lnode,*Link; 7 int main(void){ 8 Link head,k; 9 Lnode *p,*q,*t; 10 int n,i,x,m; 11 while(scanf("%d",&n)!=EOF){ 12 m=n; 13 head=(Link)malloc(sizeof(Lnode)); 14 head->next=NULL; 15 t=head; 16 for(i=0;i<n;i++){ 17 k=(Link)malloc(sizeof(Lnode)); 18 scanf("%d",&k->data); 19 k->next=NULL; 20 t->next=k; 21 t=k; 22 } 23 scanf("%d",&x); 24 printf("%d\n",n); 25 p=head->next; 26 for(i=0;i<n-1;i++){ 27 printf("%d ",p->data); 28 p=p->next; 29 } 30 printf("%d\n",p->data); 31 q=head; 32 p=q->next; 33 for(i=0;i<n;i++){ 34 if(x==p->data){ 35 q->next=p->next; 36 free(p); 37 m--; 38 p=q->next; 39 } 40 else{ 41 q=q->next; 42 p=p->next; 43 } 44 } 45 printf("%d\n",m); 46 head=head->next; 47 for(i=0;i<m-1;i++){ 48 printf("%d ",head->data); 49 head=head->next; 50 } 51 printf("%d\n",head->data); 52 } 53 return 0; 54 }