栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数据结构:两个有序单链表求差集

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构:两个有序单链表求差集

两个有序单链表求差集 前言

用于个人学习过程记录

题目

各依次输入递增有序若干个不超过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
代码
#include
using 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();
	}
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/767525.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号