c++ 写集合的交并差类求交并差

C++实现集合的交并差,我编了个怎么运行他啊
[问题点数:40分,结帖人u]
C++实现集合的交并差,我编了个怎么运行他啊
[问题点数:40分,结帖人u]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2016年9月 总版技术专家分月排行榜第二
2015年12月 总版技术专家分月排行榜第三2015年11月 总版技术专家分月排行榜第三
2016年9月 总版技术专家分月排行榜第二
2015年12月 总版技术专家分月排行榜第三2015年11月 总版技术专家分月排行榜第三
2016年9月 总版技术专家分月排行榜第二
2015年12月 总版技术专家分月排行榜第三2015年11月 总版技术专家分月排行榜第三
2016年9月 总版技术专家分月排行榜第二
2015年12月 总版技术专家分月排行榜第三2015年11月 总版技术专家分月排行榜第三
2016年9月 总版技术专家分月排行榜第二
2015年12月 总版技术专家分月排行榜第三2015年11月 总版技术专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。如何快速求两个集合的交集,并集和差集
[问题点数:20分,结帖人Zzy_ZhangZeyu_]
如何快速求两个集合的交集,并集和差集
[问题点数:20分,结帖人Zzy_ZhangZeyu_]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
2014年10月 C/C++大版内专家分月排行榜第三2014年4月 C/C++大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。两个集合的并,交和差集,输出的是有序集合(小到大)_C++,C语言_ThinkSAAS
两个集合的并,交和差集,输出的是有序集合(小到大)
两个集合的并,交和差集,输出的是有序集合(小到大)
初学数据结构,花了一天多的时间编写和调试,用的是vs2012,代码写得粗槽和冗杂,请各位指教
// 集合的并集,交集和差集.cpp : 定义控制台应用程序的入口点。
#include"stdafx.h"
#include &iostream&
#include &string&
#include"stdlib.h"
#include &vector&
#include &algorithm&
typedef struct Node //定义一个结构变量
//数据为字符
struct Node *
string Sort(string s5) //将输入的字符串进行排序(冒泡排序)
string::size_type i,j;
for(i=0;i&s5.size();i++)
for(j=0;j&s5.size()-i-1;j++)
if(s5[j]&s5[j+1])
tmp=s5[j];
s5[j]=s5[j+1];
return s5;
string DelsameElement(string s) //消除重复元素,用的是C++string 容器,其实可以用容器算法将排序和消除重复元素一起进行
string str=s;
str.erase(unique(str.begin(),str.end()),str.end());
List *CreateList(string s4,string::size_type o) //创建单链表
Node *head,*p1,*p2=NULL;
head=NULL;
for(string::size_type i=0;i&o;i++)
p1=(struct Node*)malloc(sizeof(Node));
p1-&a=s4[i];
if(head==NULL)
p2-&next=p1;
p2-&next=NULL;
void Merge(List *L3,List *L4,string::size_type m1,string::size_type n1) //将两个集合合并,我写的复杂,可以简化
List *L5,*L6,*L7,*L8,*p;
L5=L3;L6=L4;L7=L3;L8=L4;
string::size_type r=0;
bool flag=0; //定义个标志位
for(string::size_type i=0;i&m1-1;i++)
for(string::size_type i=0;i&n1-1;i++)
if(m1&n1) //如果s1的长度比s2的小,将s1中与s2不同的元素插入到s2中
for(string::size_type i=0;i&m1;i++)
for(string::size_type j=0;j&n1;j++)
if(L7-&a!=L8-&a)
if(flag==0) //如果L7中的一个元素和L8中所有元素都不相同,在L8后新建个结点,用于放置此元素
p=(struct Node*)malloc(sizeof(Node));
p-&a=L7-&a;
L6-&next=p;
string s(r+n1,0); //定义一个string变量,将合并后的集合单链表值赋予它,用它进行排序,输出有序集合
for(string::size_type i=0;i&r+n1;i++)
s[i] =L8-&a;
s=Sort(s);
for(string::size_type i=0;i&r+n1;i++)
cout && s[i];
else //如果s2的长度比s1的小,将s2中与s1不同的元素插入到s1中
for(string::size_type i=0;i&n1;i++)
for(string::size_type j=0;j&m1;j++)
if(L8-&a!=L7-&a)
if(flag==0)
p=(struct Node*)malloc(sizeof(Node));
p-&a=L8-&a;
L5-&next=p;
string s(r+m1,0); //定义一个string变量,将合并后的集合单链表值赋予它,用它进行排序,输出有序集合
for(string::size_type i=0;i&m1+r;i++)
s[i] =L7-&a;
s=Sort(s);
for(string::size_type i=0;i&r+m1;i++)
cout && s[i];
system("pause");
void Intersection(List *L3,List *L4,string::size_type m1,string::size_type n1) //两个集合交集
List *L=NULL,*L5=NULL,*L6=NULL;
string s(50,0);
string::size_type k=0;
for(string::size_type i=0;i&m1;i++)
for(string::size_type j=0;j&n1;j++)
if(L5-&a==L6-&a) //一旦L5中的元素与L6的元素相同,立马推出内层循环,标志位f置1
s[k]=L5-&a;
L5=L5-& //指向L5的下个元素
L6=L4; //L6重新指向第一个元素
if(f==0) //如果标志位为0,表示两个集合无相同元素
cout &&"该两个集合无交集!"&&
L=CreateList(s,k);
for(string::size_type i=0;i&k;i++)
cout && L-&a;
void Diffrentset(List *L3,List *L4,string::size_type m1,string::size_type n1) //两个集合差值
List *L=NULL,*L5=NULL,*L6=NULL;
string s(50,0);
string::size_type k=0,f;
bool flag=0;
for(string::size_type i=0;i&m1;i++)
for(string::size_type j=0;j&n1;j++)
if(L5-&a!=L6-&a)
s[k]=L5-&a;
if(flag!=1)
cout &&"该两个集合差集为空!"&&
L=CreateList(s,k);
for(string::size_type i=0;i&k;i++)
cout && L-&a;
int _tmain(int argc, _TCHAR* argv[])
List *L1,*L2;
string s1,s2;
cout &&"请输入第一个字符串:"&&
s1=Sort(s1); //先排序,消除重复元素,在建立单链表
s1=DelsameElement(s1);
string::size_type m=s1.size();
L1=CreateList(s1,m);
cout &&"请输入第二个字符串:"&&
s2=Sort(s2);
s2=DelsameElement(s2);
string::size_type n=s2.size();
L2=CreateList(s2,n);
cout &&"请选择功能:"&&
cout &&"1.并集"&&
cout &&"2.交集"&&
cout &&"3.差集"&&
Merge(L1,L2,m,n);
Intersection(L1,L2,m,n);
Diffrentset(L1,L2,m,n);
PHP开发框架
开发工具/编程工具
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
让ThinkSAAS更好,把建议拿来。
开发客服微信C++怎样求集合的交并补?在线等!!_百度知道如何写一个c++写的集合类运算程序_百度知道

我要回帖

更多关于 c语言求集合的交并差 的文章

 

随机推荐