有两个a,b。设结点中包含学号、姓名。从a中删去与b中所有相同学号的那些结点。 #define LA 4 #define LB 5 #define NULL 0 struct student { char num[6]; char name[8]; struct student *next; }a[LA],b[LB]; main() { struct student a[LA]={{"101","wang"},{"102","li"}, {"105","chang"},{"106","wei"}}; struct student b[LB]={{"103","chang"},{"104","ma"}, {"105","zhang"},{"107","gou"},{"108","liu"}}; int i,j; struct student *p,*p1,*p2,*pt,*head1,*head2; head1=a;head2=b; for(p1=head1,i=1;p1
next=a+i; printf("%8s%8s\n",p->num,p->name); (1) ; } p->next=NULL; for(p2=head2,i=1;p2
next=b+i; printf("%8s%8s\n",p2->num,p2->name); (2) ; } p->next=NULL; printf("\n"); (3) ; while(p1!=NULL) { (4) ; while(p2!=NULL&&strcmp(p1->num,p2->num)!=0) p2=p2->next; if(strcmp(p1->num,p2->num)==0) if(p1==head1) head1=p1->next; else p->next=p1->next; p=p1; (5) ; } p1=head1; printf("\n"); while(p1!=NULL) { printf("%7s %7s\n",p1->num,p1->name); p1=p1->next; } }