集合的交并差运算_第1页
集合的交并差运算_第2页
集合的交并差运算_第3页
集合的交并差运算_第4页
集合的交并差运算_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据结构课程设计说明书题 目集合的并交差运算学 号姓 名指导教师日 期内蒙古科技大学课程设计任务书课程名称数据结构课程设计设计题目集合的并交差运算指导教师周、康、兰时间一、教学要求1. 掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力2. 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能3. 提高综合运用所学的理论知识和方法独立分析和解决问题的能力4. 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风二、设计资料及参数每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。集合的并交差运算以链表

2、存储集合,在此基础上完成对集合的操作。要求设计类(或类模板)来描述集合,包含必要的构造函数和析构函数,以及其他能够完成如下功能的成员函数:v 输入、输出集合v 查询集合中的元素v 在集合中进行插入、删除元素v 实现集合的并、交、差运算 并设计主函数测试该类。三、设计要求及成果1. 分析课程设计题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告四、进度安排资料查阅与讨论(1天)系统分析(2天)系统的开发与测试(5天)编写课程设计说明书和验收(2天)五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天

3、点名和检查2. 根据课程设计完成情况,必须有可运行的软件。3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。4. 根据答辩的情况,应能够以清晰的思路和准确、简练的语言叙述自己的设计和回答教师的提问六、建议参考资料1数据结构 (C语言版)严蔚敏、吴伟民 主编 清华大学出版社 2004.112数据结构课程设计案例精编(用C/C+描述),李建学 等 编著,清华大学出版社 2007.23.数据结构:用面向对象方法与C+语言描述,殷人昆 主编, 清华大学出版社 2007附录:程序代码#include <stdio.h>#include<iostream.

4、h>#include <stdlib.h>typedef struct LNode/定义单链表结点类型char data; struct LNode *next; LinkList;class jihe int length; 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);void

5、ListCreat(int i);void ListDisp(int i);void BingJi();void JiaoJi(); void ChaJi(int i);void ListInsert(int i);void ListDelete(int i);int ListLength(int i); void Search( int i); jihe a3;jihe b;/*长度*/ int jihe:ListLength(int i) LinkList *p;p = ai.L;while (p->next != NULL)p = p->next;ai.length +;re

6、turn ai.length;/*输入*/ void jihe:ListCreat(int i) /*尾插法插入元素*/ cout<<"请为集合输入数值(以回车键结束):"char c; LinkList *p,*r; ai.L=(LinkList*)malloc(sizeof(LinkList); ai.L->next=NULL; r=ai.L; cin>>c; while(c!='n') p=(LinkList*)malloc(sizeof(LinkList); if(c=' ') else p->da

7、ta=c; r->next=p; r=p; c=cin.get(); r->next=NULL; cout<<"输入完毕,请按回车键返回主菜单!"<<endl; getchar(); /*输出*/void jihe:ListDisp(int i) LinkList *p; p=ai.L->next; while(p!=NULL) cout<<p->data<<" " p=p->next; a2.L->next=NULL; cout<<endl; cout<

8、;<"输出完毕,请按回车键返回主菜单!"<<endl; getchar();/*插入*/void jihe:ListInsert(int i)char z;docout<<"请输入插入位置以及数值:"<<endl;int d;char data;cin>>d;cin>>data; LinkList *q,*p; int j;int n;n=ListLength(i); if(d<1 | d>n+1) cout<<"操作失败!" else j=0;

9、 p=ai.L; while(j<d-1) p=p->next; j+; q=(LinkList *)malloc(sizeof(LinkList); q->data=data; q->next = p->next; p->next=q; cout<<"插入成功!" cout<<"是否继续插入(y/n),并以回车键结束!"<<endl;cin>>z;while(z='y');/*查找*/void jihe:Search(int i)char key; co

10、ut<<"输入要查找的关键字:"<<endl;cin>>key;int low=1;ListLength(i);int high=ai.length;int mid;int j=0;LinkList *p;while(low<=high)mid=(low+high)/2;j=0; p=ai.L;/将指针指向链表的头结点首地址 while(j<mid) p=p->next; j+;if(key=p->data)cout<<"位置为"<<mid<<"查找

11、成功!按回车键返回主菜单"<<endl;getchar();return;else if(key<p->data)high=mid-1;elselow=mid+1;cout<<endl<<"对不起,集合中没有该元素!按回车键返回主菜单"<<endl;getchar();return;/*删除*/void jihe:ListDelete(int i)char z;docout<<"请输入要删除元素的位置:"<<endl; int d; cin>>d;

12、int n;n=ListLength(i); LinkList *p,*q; int j; char s; while(d<1 | d>n) cout<<"对不起!您输入的位置有误,请重新输入!"<<endl; cin>>d; j=0; p=ai.L; while(j<d-1) p=p->next; j+; q=p->next; p->next=q->next; s=q->data; free(q); cout<<"删除数值:"<<s<<

13、;endl;cout<<"是否继续删除(y/n),并以回车键结束!"<<endl; cin>>z;while(z='y'); /*并集*/void jihe:BingJi() LinkList *L1,*L2,*L3;L1=a0.L;L2=a1.L;L3=a2.L;LinkList *p1;LinkList *p2;LinkList *s;p1=L1->next;while (p1!=NULL) s=(LinkList *)malloc(sizeof(LinkList); s->data=p1->data

14、;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;/*交集*/

15、void jihe:JiaoJi() LinkList *L1,*L2,*L3;L1=a0.L;L2=a1.L;L3=a2.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(Lin

16、kList); s->data=p1->data; s->next=L3->next; L3->next=s; p1=p1->next; /*差集*/void jihe:ChaJi(int i)LinkList *L1,*L2,*L3;if(i=1) L1=a0.L; L2=a1.L; L3=a2.L;elseL2=a0.L; L1=a1.L; L3=a2.L; LinkList *p1=L1->next,*p2,*s; while (p1!=NULL) p2=L2->next; while (p2!=NULL) && (p2-&

17、gt;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; int xz()cout<<" 请选择集合:nt1、集合A t2、集合B"<<endl;int i;cin>>i;for(;i!=1 && i!=2;)cout<<"指

18、令错误,请正确输入!"<<endl;cin>>i;if(1=i) cout<<"已选择集合A:"<<endl; if(2=i) cout<<"已选择集合B:"<<endl; -i;return i;void main() int f;int x;cout<<endl<<"ttt (_)欢迎进入集合的运算系统(_)"<<endl;cout<<endl<<"tttttt "<

19、;<endl; do cout<<"*" <<"1、赋值操作t2、输出列表"<<endl <<"3、查找元素t4、插入元素"<<endl <<"5、删除元素t6、A B "<<endl <<"7、A Bt8、A - B "<<endl <<"9、B - At10、exit"<<endl; cout<<"*"

20、cout<<"请选择选项前序号: " cin>>x; switch(x) case 1:cout<<endl<<"赋值操作:"<<endl;f=xz();af.ListCreat(f); break; case 2:cout<<endl<<"输出链表:"<<endl;f=xz();af.ListDisp(f); break; case 3:cout<<endl<<"查找元素:"<<endl;f=xz();af.Sea

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论