格物学 高中知识点

谁有数据结构课程设计集合交并运算啊?

格物自测!为高考,从高一就准备自己的知识点储备!
2024-05-04
谁有数据结构课程设计集合交并运算啊?
#include #include #include using namespace std;
#define ElemType char typedef struct ElemNode { ElemType elem;
struct ElemNode *next;
}ElemNode, *Set;
//-------------FunctionList------------------------------ //---------------函数原型-------------------------------- int LengthOf(Set src);
//返回一个集合的长度 void CreateSet(Set dest);
//创建一个新的字母集合,限定a-z void EmptySet(Set dest);
//清空一个集合,保留头结点 void DestroySet(Set des void SortSet(Set dest);
/到大的排序 void DisplaySet(Set src)所有元素 int ExistElem(SemType e);
//判断元素是否存在于集合中 Set dest, El除集合中的一个元素一次 void AddElem(Set dest, ElemType e);
//在链表尾 void ContactSet(Set dest, Set src);
//连接一个集合到另一个集合 void AddSet(Set dest, Set src1, Set src2);
//集合并运算 void MulSet(Set dest, Set src1, Set src2);
// void SubSet(Set dest, Set src1, Set src2);
//集合差运算 int ExistSubset(Set dest, Set src);
//判断 void NegSet(Set dest, Set src);
// int main() { Set d(sizeof(ElemNode));
Set src1=(Set(ElemNode));
Set src2=(Set)malloc(sizeof(ElemNode));
dest->next=NULL;
co合:"< CreateSet(src1);
CreateSet cout< cout<<"Set1 = ";
DisplaySet(src1);
cout<<"\t";
cout<<"Set2 = ";
DisplaySet(src2);
cout< int item;
cout<<"1->集合并"<<" "<<"2->集合交"<<" "<<"3->集合差"<<" "<<"非零整数->错误!
重输"<<" "<<"0->进入下一步演示"< while(cin>>item) { if(item) switch(item) { case 1: cout<<"集合并运算:Set1∪Set2 = ";
AddSet(dest, src1, src2);
DisplaySet(dest);
EmptySet(dest);
cout<break;
case 2: cout<<"集合交运算:Set1∩Set2 = ";
MulSet(dest, src1, src2);
DisplaySet(dest);
EmptySet(dest);
cout<break;
case 3: cout<<"集合差运算:Set1-Set2 = ";
SubSet(dest, src1, src2);
DisplaySet(dest);
EmptySet(dest);
cout<break;
default: cout<<"输入错误!
重输!
!
!
"<break;
} else {cout<<"进入下一步演示..."<break;
} // 此处在VC++ 6.0 运行与CFree中有点不同(在CFree中要回车~~~) } getchar();
cout<<"输入一个集合:"< CreateSet(dest);
cout<<"原集合为:";
DisplaySet(dest);
cout< char ch;
cout<<"在链表尾部添加一个元素ch = ";
cin>>ch;
AddElem(dest, ch);
DisplaySet(dest);
cout< cout<<"删除集合中的存在的某个元素ch = ";
cin>>ch;
DelElem(dest, ch);
DisplaySet(dest);
cout< cout<<"再创建一个集合src = ";
Set src=(Set)malloc(sizeof(ElemNode));
getchar();
CreateSet(src);
cout<<"将src集合链接到集合dest中..."< ContactSet(dest, src);
cout<<"此时dest为:";
DisplaySet(dest);
cout< if(ExistSubset(dest, src)) cout<<"此时src是dest的子集..."< else cout<<"此时src不是dest的子集..."< cout< DisplaySet(dest);
cout< cout<<"dest的补集是:";
Set p=(Set)malloc(sizeof(ElemNode));
p->next=NULL;
NegSet(p, dest);
DisplaySet(p);
cout<!
!
"< DestroySet(dest);
return 0;
} //---------------BasicFunctions----------------------- //------------------实现-------------------------- int LengthOf(Set src) { //返回一个集合的长度 int i=0;
while(src->next!
=NULL) { i++;
src=src->next;
} return i;
}//LengthOf void CreateSet(Set dest) { //创建一个新的字母集合,限定a-z ElemType ch;
Set p=dest,n;
for(;
;
) { ch=getchar();
if(ch=='\n') break;
if(ch<97||ch>122) continue;
n=(Set)malloc(sizeof(ElemNode));
p->next=n;
n->elem=ch;
n->next=NULL;
p=n;
} return ;
}//CreateSet void EmptySet(Set dest) { //清空一个集合,保留头结点 Set p,n;
while(dest->next!
=NULL) { p=dest;
n=p->next;
for(;
n->next!
=NULL;
) { p=n;
n=n->next;
} free(n);
p->next=NULL;
} }//EmptySet void DestroySet(Set dest) { //销毁集合 EmptySet(dest);
free(dest);
}//DestroySet void SortSet(Set dest) { //对一个字母集合进行从小到大的排序 int i,j,l,flag;
Set p,q,n;
l=LengthOf(dest);
if(l<2) return;
flag=1;
for(i=l-1;
i>0&&flag==1;
i--) { flag=0;
p=dest;
q=p->next;
n=q->next;
for(j=0;
jj++) { if(q->elem>n->elem) { flag=1;
p->next=n;
q->next=n->next;
n->next=q;
q=p->next;
n=q->next;
} p=q;
q=n;
n=n->next;
} } }//SortSet void DisplaySet(Set src) { //打印集合的所有元素 Set p;
if(src->next==NULL) { printf("φ");
return ;
} p=src;
do { p=p->next;
putchar(p->elem);
} while(p->next!
=NULL);
}//DisplaySet int ExistElem(Set dest, ElemType e) { //判断元素是否存在于集合中 Set p=dest;
if(LengthOf(p)==0) return 0;
else{ p=p->next;
while(p->elem!
=e) { if(p->next==NULL) return 0;
p=p->next;
} return 1;
} }//ExistElem void DelElem(Set dest, ElemType e) { //删除集合中的一个元素一次 Set p=dest,q;
if(LengthOf(p)==0) return ;
q=p->next;
if(LengthOf(p)==1) { p->next=NULL;
free(q);
} while(q->elem!
=e) { p=p->next;
q=q->next;
} if(q->next==NULL) { p->next=NULL;
free(q);
} else p->next=q->next;
}//DelElem void AddElem(Set dest, ElemType e) { //在链表尾部追加一个元素 Set p=dest, n;
while(p->next!
=NULL) p=p->next;
n=(Set)malloc(sizeof(ElemNode));
p->next=n;
n->elem=e;
n->next=NULL;
}//AddElem void ContactSet(Set dest, Set src) { //连接一个集合到另一个集合 Set p=dest;
while(p->next!
=NULL) p=p->next;
p->next=src->next;
}//ContactSet void AddSet(Set dest, Set src1, Set src2) { //集合并运算 SortSet(src1);
SortSet(src2);
int i=0,j=0,len1=LengthOf(src1),len2=LengthOf(src2);
src1=src1->next;
src2=src2->next;
while(ielem<=src2->elem) { i++;
if(!
ExistElem(dest, src1->elem)) { AddElem(dest, src1->elem);
src1=src1->next;
} else { src1=src1->next;
} } else { j++;
if(!
ExistElem(dest, src2->elem)) { AddElem(dest, src2->elem);
src2=src2->next;
} else { src2=src2->next;
} } } while(i if(!
ExistElem(dest, src1->elem)) { AddElem(dest, src1->elem);
src1=src1->next;
} } while(j if(!
ExistElem(dest, src2->elem)) { AddElem(dest, src2->elem);
src2=src2->next;
} } }//AddSet void MulSet(Set dest, Set src1, Set src2) { //集合交运算 SortSet(src1);
SortSet(src2);
int i=0,j=0,len1=LengthOf(src1),len2=LengthOf(src2);
src1=src1->next;
src2=src2->next;
while(ielemelem) {i++;
src1=src1->next;
} else if(src1->elem>src2->elem) {j++;
src2=src2->next;
} else { i++;
j++;
if(!
ExistElem(dest, src1->elem)) { AddElem(dest, src1->elem);
src1=src1->next;
src2=src2->next;
} } } }//MulSet void SubSet(Set dest, Set src1, Set src2) { //集合差运算 SortSet(src1);
SortSet(src2);
int i=0,len=LengthOf(src1);
src1=src1->next;
while(i if(!
ExistElem(src2, src1->elem)) { if(!
ExistElem(dest, src1->elem)) { AddElem(dest, src1->elem);
src1=src1->next;
} } else { src1=src1->next;
} } }//SubSet int ExistSubset(Set dest, Set src) { //子集判断 int i=0,len=LengthOf(src);
src=src->next;
while(iExistElem(dest, src->elem)) return 0;
i++;
src=src->next;
} return 1;
}//ExistSubset void NegSet(Set dest, Set src) { //求补集 SortSet(src);
int i=0;
while(i<26) { if(!
ExistElem(src, i+97)) AddElem(dest, i+97);
i++;
} }//NegSet None 内容来自网友回答


什么是对称差运算?

补集及其运算

高考倒计时 {dede:global.cfg_gktime/}2024年高考时间 6月7日,8日,9日
高中知识点专业其他问题:
高中知识点
相近专业 历年高考分数 高中知识点 高一 测试 计算机 材料 机械 仪器仪表 能源动力 电气 电子信息 自动化 化工与制药 地质 矿业 纺织 轻工 交通运输 海洋工程 航空航天 兵器 核工程 农业工程 林业工程 环境科学与工程 生物医学工程 食品科学与工程 建筑 安全科学与工程 生物工程 公安技术 网络空间安全 土木 水利 测绘 植物生产 自然保护与环境生态 动物生产 动物医学 林学 水产 草学 基础医学 临床医学 口腔医学 公共卫生与预防医学 中医学 中西医结合 药学 中药学 法医学 医学技术 管理科学与工程 工商管理 农业经济管理 公共管理 图书情报与档案管理 物流管理与工程 工业工程 电子商务 旅游管理 艺术学理论 音乐与舞蹈学 戏剧与影视学 美术学 设计学 哲学 经济学 财政学 金融学 经济与贸易 法学 政治学 社会学 民族学 马克思主义理论 公安学 教育学 体育学 中国语言文学 外国语言文学 新闻传播学 历史学 数学 物理学 化学 天文学 地理科学 大气科学 海洋科学 地球物理学 地质学 生物科学 心理学 统计学 高考试题库 力学