一个链表求集合并集交集的错误
请各位大侠帮我看一下怎么改:
我要用单链表求两个链表的并集,交集
//求并集的函数:void bingji(mylist*p,mylist*q,mylist*&r)//r作为并集列表的头指针,p,q是输入的两个指针{ mylist *k,*m; r=new mylist; m=r; for(;p;)//把一个集合的值复制到 { m->data=p->data; k=new mylist; m->next=k; p=p->next; m=m->next; } //下面要把q中有的且r中没有的元素添加到r中 for(;q;) { m->data=q->data; k=new mylist; m->next=k; q=q->next; m=m->next; } delete k; m->next=NULL;}//求交集的函数:void jiaoji(mylist*p,mylist*q,mylist*&r)//这样做的话会虽然能求出正确的交集,但是会导致破坏原链表{ mylist *m,*n,*k; mylist *temp;//用于存放前一个节点的地址 r=new mylist; m=r; n=q; int i=-1; for(;p;) { for(;q&&-1==i;) { if(p->data==q->data) { k=new mylist; m->data=p->data; m->next=k; m=m->next; i=0; if(q==n) { q=q->next; n=q; } else { temp->next=q->next; q=q->next; } } else { temp=q; q=q->next; } } i=-1; p=p->next; q=n; } delete k; m->next=NULL;}