集合的交并差运算.docx
- 文档编号:23541399
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:22
- 大小:121.30KB
集合的交并差运算.docx
《集合的交并差运算.docx》由会员分享,可在线阅读,更多相关《集合的交并差运算.docx(22页珍藏版)》请在冰豆网上搜索。
集合的交并差运算
《数据结构》
课程设计说明书
题目
集合的并交差运算
学号
姓名
指导教师
日期
内蒙古科技大学课程设计任务书
课程名称
数据结构课程设计
设计题目
集合的并交差运算
指导教师
周、康、兰
时间
一、教学要求
1.掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力
2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能
3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力
4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风
二、设计资料及参数
每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。
集合的并交差运算
以链表存储集合,在此基础上完成对集合的操作。
要求设计类(或类模板)来描述集合,包含必要的构造函数和析构函数,以及其他能够完成如下功能的成员函数:
v输入、输出集合
v查询集合中的元素
v在集合中进行插入、删除元素
v实现集合的并、交、差运算
并设计主函数测试该类。
三、设计要求及成果
1.分析课程设计题目的要求
2.写出详细设计说明
3.编写程序代码,调试程序使其能正确运行
4.设计完成的软件要便于操作和使用
5.设计完成后提交课程设计报告
四、进度安排
资料查阅与讨论(1天)
系统分析(2天)
系统的开发与测试(5天)
编写课程设计说明书和验收(2天)
五、评分标准
1.根据平时上机考勤、表现和进度,教师将每天点名和检查
2.根据课程设计完成情况,必须有可运行的软件。
3.根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。
4.根据答辩的情况,应能够以清晰的思路和准确、简练的语言叙述自己的设计和回答教师的提问
六、建议参考资料
1.《数据结构(C语言版)》严蔚敏、吴伟民主编清华大学出版社2004.11
2.《数据结构课程设计案例精编(用C/C++描述)》,李建学等编著,清华大学出版社2007.2
3.《数据结构:
用面向对象方法与C++语言描述》,殷人昆主编, 清华大学出版社2007
附录:
程序代码
#include
#include
#include
typedefstructLNode//定义单链表结点类型
{
chardata;
structLNode*next;
}LinkList;
classjihe
{
intlength;
LinkList*L;
public:
jihe()
{
L=(LinkList*)malloc(sizeof(LinkList));
length=0;
L->next=NULL;
}
~jihe()
{
LinkList*p;
while(L->next)
{
p=L->next;
L->next=p->next;
free(p);
}
}
voidListCreat(inti);
voidListDisp(inti);
voidBingJi();
voidJiaoJi();
voidChaJi(inti);
voidListInsert(inti);
voidListDelete(inti);
intListLength(inti);
voidSearch(inti);
};
jihea[3];jiheb;
/*************************长度****************************************/
intjihe:
:
ListLength(inti)
{
LinkList*p;
p=a[i].L;
while(p->next!
=NULL)
{
p=p->next;
a[i].length++;
}
returna[i].length;
}
/****************************输入*************************************/
voidjihe:
:
ListCreat(inti)/*尾插法插入元素*/
{
cout<<"请为集合输入数值(以回车键结束):
";
charc;
LinkList*p,*r;
a[i].L=(LinkList*)malloc(sizeof(LinkList));
a[i].L->next=NULL;
r=a[i].L;
cin>>c;
while(c!
='\n')
{
p=(LinkList*)malloc(sizeof(LinkList));
if(c=='')
{}
else
{
p->data=c;
r->next=p;
r=p;
}
c=cin.get();
}
r->next=NULL;
cout<<"输入完毕,请按回车键返回主菜单!
"< getchar(); } /*****************************输出***********************************/ voidjihe: : ListDisp(inti) { LinkList*p; p=a[i].L->next; while(p! =NULL) { cout< p=p->next; } a[2].L->next=NULL; cout< cout<<"输出完毕,请按回车键返回主菜单! "< getchar(); } /****************************插入******************************************/ voidjihe: : ListInsert(inti) { charz; do { cout<<"请输入插入位置以及数值: "< intd; chardata; cin>>d;cin>>data; LinkList*q,*p; intj;intn;n=ListLength(i); if(d<1||d>n+1) cout<<"操作失败! "; else { j=0; p=a[i].L; while(j { p=p->next; j++; } q=(LinkList*)malloc(sizeof(LinkList)); q->data=data; q->next=p->next; p->next=q; cout<<"插入成功! "; } cout<<"是否继续插入(y/n),并以回车键结束! "< cin>>z; }while(z=='y'); } /*********************************查找***************************************************/ voidjihe: : Search(inti) { charkey; cout<<"输入要查找的关键字: "< cin>>key; intlow=1;ListLength(i); inthigh=a[i].length; intmid; intj=0; LinkList*p; while(low<=high) { mid=(low+high)/2; j=0; p=a[i].L;//将指针指向链表的头结点首地址 while(j { p=p->next; j++; } if(key==p->data) { cout<<"位置为"< 按回车键返回主菜单"< getchar(); return; } elseif(key high=mid-1; else low=mid+1; } cout< 按回车键返回主菜单"< getchar(); return; } /*********************************删除****************************************************/ voidjihe: : ListDelete(inti) { charz; do { cout<<"请输入要删除元素的位置: "< intd; cin>>d; intn;n=ListLength(i); LinkList*p,*q; intj; chars; while(d<1||d>n) { cout<<"对不起! 您输入的位置有误,请重新输入! "< cin>>d; } j=0; p=a[i].L; while(j { p=p->next; j++; } q=p->next; p->next=q->next; s=q->data; free(q); cout<<"删除数值: "< cout<<"是否继续删除(y/n),并以回车键结束! "< cin>>z; }while(z=='y'); } /***************************并集*****************************************/ voidjihe: : BingJi() { LinkList*L1,*L2,*L3; L1=a[0].L; L2=a[1].L; L3=a[2].L; LinkList*p1;LinkList*p2;LinkList*s; p1=L1->next; while(p1! =NULL) { s=(LinkList*)malloc(sizeof(LinkList)); s->data=p1->data; s->next=L3->next; L3->next=s; p1=p1->next; } p2=L2->next; while(p2! =NULL) { p1=L1->next; while((p1! =NULL)&&(p1->data! =p2->data)) p1=p1->next; if(p1==NULL) { s=(LinkList*)malloc(sizeof(LinkList)); s->data=p2->data; s->next=L3->next; L3->next=s; } p2=p2->next; } } /***************************交集*********************************************/ voidjihe: : JiaoJi() { LinkList*L1,*L2,*L3; L1=a[0].L; L2=a[1].L; L3=a[2].L; LinkList*p1=L1->next,*p2,*s; p1=L1->next; while(p1! =NULL) { p2=L2->next; while((p2! =NULL)&&(p2->data! =p1->data)) { p2=p2->next; } if((p2! =NULL)&&(p2->data==p1->data)) { s=(LinkList*)malloc(sizeof(LinkList)); s->data=p1->data; s->next=L3->next; L3->next=s; } p1=p1->next; } } /*****************************差集******************************************/ voidjihe: : ChaJi(inti) { LinkList*L1,*L2,*L3; if(i==1) { L1=a[0].L; L2=a[1].L; L3=a[2].L; } else { L2=a[0].L; L1=a[1].L; L3=a[2].L; } LinkList*p1=L1->next,*p2,*s; while(p1! =NULL) { p2=L2->next; while((p2! =NULL)&&(p2->data! =p1->data)) { p2=p2->next; } if(p2==NULL) { s=(LinkList*)malloc(sizeof(LinkList)); s->data=p1->data; s->next=L3->next; L3->next=s; } p1=p1->next; } } intxz() { cout<<"请选择集合: \n\t1、集合A\t2、集合B"< inti; cin>>i; for(;i! =1&&i! =2;) {cout<<"指令错误,请正确输入! "< cin>>i; } if(1==i) cout<<"已选择集合A: "< if(2==i) cout<<"已选择集合B: "< --i; returni; } voidmain() { intf; intx; cout< cout< do{cout<<"********************************************************************************" <<"1、赋值操作\t2、输出列表"< <<"3、查找元素\t4、插入元素"< <<"5、删除元素\t6、A∪B"< <<"7、A∩B\t8、A-B"< <<"9、B-A\t10、exit"< cout<<"********************************************************************************"; cout<<"请选择选项前序号: "; cin>>x; switch(x) { case1: cout< "< break; case2: cout< "< break; case3: cout< "< break; case4: cout< "< break; case5: cout< "< break; case6: cout< "< (2); break; case7: cout< "< (2); break; case8: cout< "< (1);b.ListDisp (2); break; case9: cout< "< (2);b.ListDisp (2); break; case10: system("cls");cout<<"谢谢使用,再见! ! ! "< } }while(x! =10); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 集合 交并 运算