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

集合的并、交、差 单链表 C++

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

集合的并、交、差 单链表 C++

#include
using namespace std;
#include
#define ERROR 0 
#define OK 1
typedef int ElemType;
using namespace std;
typedef struct LNode
{
	ElemType data;
	struct LNode* next;
}LNode,*LinkList;
void InitList(LinkList &L)
{
	L=new LNode;//或L=(LinkList)malloc(sizeod(LNode)); 
	L->next=NULL;
}
void CreateList(LinkList &L,int n)//尾插法 
{
	int i;
	LinkList p,r;
	r=L;
	for(i=1;i<=n;i++)
	{
		p=new LNode;
		cin>>p->data;//scanf(&p->data);
		p->next=NULL;
		r->next=p;
		r=p;
	}
}
int LocateList(LinkList L,ElemType e)
{
	LinkList p;
	p=L->next;
	while(p&&p->data!=e)
		p=p->next;
	if(p)return OK;	
	else return ERROR;//没找到 
}
void unionset(LinkList L1,LinkList L2,LinkList &La) 
{
	int sign; 
	ElemType e;
	LinkList p,r,s;
	p=L1->next;r=La;
	while(p)
	{
		e=p->data;
		sign=LocateList(L2,e);
		if(sign==0)
		{
			s=new LNode;
			s->data=p->data;
			r->next=s;
			r=s;
			p=p->next;
		}
		else p=p->next;
	}
	r->next=L2->next;
}
void Intersection(LinkList L1,LinkList L2,LinkList &Lb) 
{
	int sign; 
	ElemType e;
	LinkList p,r,s;
	p=L1->next;r=Lb;
	while(p)
	{
		e=p->data;
		sign=LocateList(L2,e);
		if(sign==1)
		{
			s=new LNode;
			s->data=p->data;
			r->next=s;
			r=s;
			p=p->next;
		}
		else p=p->next;
	}
	r->next=NULL;
}
void Except(LinkList L1,LinkList L2,LinkList &Lc) 
{
	int sign; 
	ElemType e;
	LinkList p,r,s;
	p=L1->next;r=Lc;
	while(p)
	{
		e=p->data;
		sign=LocateList(L2,e);
		if(sign==0)
		{
			s=new LNode;
			s->data=p->data;
			r->next=s;
			r=s;
			p=p->next;
		}
		else p=p->next;
	}
	r->next=NULL;
}
void PrintList(LinkList L)
{
	LinkList p;
	p=L->next;
	while(p){
		cout<data<<" ";
		p=p->next;
	}
}
int main()
{
	int m,n;
	LinkList L1,L2,La,Lb,Lc,Ld;
	InitList(L1);
	InitList(L2);
	InitList(La);
	InitList(Lb);
	InitList(Lc);
	InitList(Ld);
	cout<<"集合A有几个元素:";
	cin>>m;
	cout<<"请依次输入集合A元素:"; 
	CreateList(L1,m);
	cout<<"集合B有几个元素:";
	cin>>n;
	cout<<"请依次输入集合B元素:"; 
	CreateList(L2,n);
	unionset(L1,L2,La);
	cout<<"A∪B:";	
	PrintList(La);
	Intersection(L1,L2,Lb);
	cout<<'n'<<"A∩B:";
	PrintList(Lb);
	Except(L1,L2,Lc);
	cout<<'n'<<"A-B:";
	PrintList(Lc);
	Except(L2,L1,Ld);
	cout<<'n'<<"B-A:";
	PrintList(Ld);
}

运行结果

 

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1015727.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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