http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1464
1 #include<stdio.h> 2 #include<stdlib.h> 3 typedef struct node 4 { 5 int data; 6 struct node *next; 7 }lb; 8 lb *creat(int m)//建顺序表 9 { 10 int i; 11 lb *head,*tail,*p; 12 head=(lb*)malloc(sizeof(lb));//申请空间,开辟结点 13 head->next=NULL; 14 tail=head; 15 for(i=0;i<m;i++) 16 { 17 p=(lb*)malloc(sizeof(lb)); 18 scanf("%d",&p->data); 19 p->next=NULL; 20 tail->next=p; 21 tail=p; 22 } 23 return head; 24 } 25 void del(lb *head,int a, int b)//删除链表中属于[a,b]的数 26 { 27 lb *p,*q; 28 p=head; 29 while(p->next!=NULL) 30 { 31 if(p->next->data>=a&&p->next->data<=b) 32 { 33 q=p->next; 34 p->next=q->next; 35 free(q); 36 } 37 else 38 p=p->next; 39 } 40 p=head; 41 if(p->next==NULL) 42 printf("-1\n"); 43 else 44 { 45 while(p->next->next!=NULL) 46 { 47 printf("%d ",p->next->data); 48 p=p->next; 49 } 50 printf("%d\n",p->next->data); 51 } 52 } 53 int main() 54 { 55 int n,a,b,m; 56 lb *head; 57 scanf("%d",&n); 58 while(n--) 59 { 60 scanf("%d %d %d",&m,&a,&b); 61 head=creat(m); 62 del(head,a,b); 63 } 64 return 0; 65 }
若你有更好的方法,请留言。相互交流,共同进步!