题目:输入顺序表A,B,C。删去A中B,C公共的元素。
#include<stdio.h> #include<stdlib.h> typedef struct node{ int num; struct node* llink; struct node* rlink; }node; node* init(int x){ int i; node *head,*p,*q; head=(node*)malloc(sizeof(node)); head->llink=NULL; q=head; while(x--){ p=(node*)malloc(sizeof(node)); scanf("%d",&(p->num)); q->rlink=p; p->llink=q; q=p; } q->rlink=NULL; return head; } node* dele(node* x,node* y,node *z){ node *p,*q,*u,*r,*t,*head; head=x; p=x->rlink; q=y->rlink; u=z->rlink; while(q){ while(u){ while(p){ if((p->num)==(q->num)){ if(p->rlink==NULL){ r=p->llink; r->rlink=NULL; p=r; } else if(p->llink==NULL){ p=p->rlink; head->rlink=p; } else{ r=p->llink; t=p->rlink; r->rlink=t; t->llink=r; p=t; } } p=p->rlink; } u=u->rlink; p=head->rlink; } p=head->rlink; u=z->rlink; q=q->rlink; } return head; } node* output(node *p){ node *q; q=p->rlink; printf("%d",(q->num)); q=q->rlink; while(q){ printf(" %d",(q->num)); q=q->rlink; } printf("\n"); } int main(){ int m,n,s; node *head1,*head2,*head3; scanf("%d%d%d",&m,&n,&s); head1=init(m); head2=init(n); head3=init(s); head1=dele(head1,head2,head3); output(head1); }左右不分真的好可怕~