瓜田李夏91baby:帮我看个程序吧?这个题目是:A,B,C,三集合,删除A集合中既在B又在C中的元素,他们都是顺序表

来源:百度文库 编辑:高校问答 时间:2024/05/09 07:45:43
#include <iostream.h>
#include <malloc.h>
#include <stdio.h>
//--------------------------------------------
struct linklist
{
struct linklist *next;
int data;

}L;
//-------------------------------------------
void creatlist(linklist &L,linklist *h)
{
linklist *p,*r;
int n,i;

scanf("%d",&n);
printf("please input the data:\n");
h=(linklist *)malloc(sizeof(linklist));
h->next=NULL;
r=h;

for(i=1;i<=n;i++)
{
p=(linklist *)malloc(sizeof(linklist));

scanf("%d",&p->data);p->next=NULL;
r->next=p;
r=p;
}

}
//--------------------------------------------
void main()
{
linklist a,b,c; linklist *la,*lb,*lc;
printf("input the a-list length:\n");
creatlist(a,la);
printf("input the b-list length:\n");
creatlist(b,lb);
printf("input the c-list length:\n");
creatlist(c,lc);

struct linklist *p,*q,*r,*t,*s;
s=la;
p=la->next;q=lb->next;r=lc->next;
while((p!=NULL)&&(q!=NULL)&&(r!=NULL))
{ if((p->data==q->data)&&(p->data==r->data))
{ s->next=p->next;
t=p;
p=p->next;
free(t);
q=q->next;
r=r->next;
}
else
{

if((p->data<r->data)&&(p->data==q->data)) {p=p->next; q=q->next;}
if((p->data<q->data)&&(p->data==r->data)) { r=r->next; p=p->next;}
if((p->data>r->data)&&(q->data==r->data)) { r=r->next; q=q->next;}
if(((q->data>r->data)&&(p->data>=q->data))||((p->data>r->data)&&(p->data<q->data))) r=r->next;
if(((q->data<r->data)&&(p->data>=r->data))||((p->data<r->data)&&(p->data>q->data))) q=q->next;
if(((q->data>p->data)&&(r->data>=q->data))||((p->data<r->data)&&(r->data<q->data))) p=p->next;

}

}
}