用于个人学习过程记录
题目各依次输入递增有序若干个不超过100的整数,分别建立两个递增有序单链表,分别表示集合A和集合B。设计算法求出两个集合A和B 的差集
(即仅由在A中出现而不在B中出现的元素所构成的集合),并存放于A链表中。要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。
然后输出求的差集的单链表。测试数据保证结果链表至少存在一个元素。
输入格式:
首先输入一个整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据先在第一行输入数据个数n及n个依次递增有序的不超过100的整数,
再在第二行输入数据个数m及m个依次递增有序的不超过100的整数。
输出格式:
对于每组测试,输出A与B的差集的单链表,每两个数据之间留一个空格。
输入样例:
1 11 10 14 23 25 26 31 34 42 51 65 90 10 10 41 42 46 51 58 59 60 68 97
输出样例:
14 23 25 26 31 34 65 90代码
#includeusing namespace std; struct LNode{ int data; LNode *next; }; struct linkList{ LNode *head; void Init(); void create(int n); void traveser(); }; void linkList::Init(){ head = new LNode; head->next=NULL; } void linkList::create(int n){ Init(); LNode *q= head; while(n--){ LNode *p =new LNode; cin>>p->data; p->next=q->next; q->next=p; q=p; } } void linkList::traveser(){ LNode *p=head->next; while(p){ if(p!=head->next) cout<<" "; cout< data; p=p->next; } cout< next;q!=NULL;q=q->next){ if(p->next && p->next->data==q->data){ LNode *r=p->next; p->next=r->next; delete r; flag = true; break; } } if(flag==false)p=p->next; } } int main(){ int T; cin>>T; while(T--) { linkList a,b; int n,m; cin>>n; a.create(n); cin>>m; b.create(m); deleteList(a,b); a.traveser(); } }



