数据结构c++课程设计。
题目: 集合的并、交和差运算
1、设计题目。
集合的并、交和差运算。
2、小组成员分工说明。
一个人。3、需求分析。
1)运行环境(软、硬件环境)
软件环境:microsoft vista操作系统,visual c++ 6.0
硬件环境:2.0gb内存。
2)输入的形式和输入值的范围。
运行所给的测试数据,集合的元素限定为小写字符〔a. .z〕:
第一组: set1=magazine ,set2=*****
第二组: set1=0120per4a6tion89,set2=error data
输出的形式描述。
程序运行并、交和差运算后得到数据,输出字符。
3)功能描述
能演示执行集合的并、交和差运算。
4)测试数据。
(1) set1=magazine ,set2=*****,set1∪set2=aeginmprz,set1∩set2=ae,set1-set2=gimnz。
(2) set1=0120per4a6tion89,set2=error data,set1∪set2=adeinoprt,set1∩set2=aeort,set1-set2=inp。
四、概要设计。
1)抽象数据类型定义描述。
顺序表的抽象数据类型描述)
adt seqlist is
data线性表的长度。
operation
seqlist
初始化值:无。
动作:置顺序表的长度为0
length
输入:无。前置条件:表已存在。
功能:求表的长度。
输出:返回表的长度,即表中数据元素的个数。
后置条件:表不变。
get输入:元素的序号i
前置条件:表已存在,i合法。
功能:在表中取序号为i的数据元素。
输出:若i合法,返回序号为i的元素值,否则抛出异常。
后置条件:表不变。
locate
输入:数据元素item
前置条件:表已存在。
功能:**性表中查找值等于item的元素。
输出:若查找成功,返回x在表中的序号,否则返回0
后置条件:表不变。
insert
输入:插入位置i;待插元素item
前置条件:表已存在,i合法。
功能:在表的第i个位置处插入一个新元素x
输出:若插入不成功,抛出异常。
后置条件:若插入成功,表中增加一个新元素。
delete
输入:删除位置i
前置条件:表已存在。
功能:删除表中的第i个元素。
输出:若删除成功,返回被删元素,否则抛出异常。
后置条件:若删除成功,表中减少一个元素。
empty输入:无。
前置条件:表已存在。
功能:判断表是否为空。
输出:若是空表,返回1,否则返回0
后置条件:表不变。
clear输入:无。
前置条件:无。
功能:清空顺序表。
输出:无。后置条件:表的长度是0
end adt seqlist
2)功能模块设计(如主程序模块设计)
3)模块层次调用关系图。
五、详细设计。
实现概要设计中定义的所有的类的定义及类中成员函数,并对主要的模块写出伪码算法。
1、顺序表存储结构的定义。
2、成员函数类的定义。
3、并、交和差三个操作函数的实现。
1)并运算:将b中的元素插到a后面后形成新的集合,定义字符i在a到z之间,并将新的集合中的个元素与i进行比较,若相同则将此时i的值插入c中作为输出值,若不同则i++继续比较。
template
seqlist bin(seqlist a,seqlist b)
seqlist c;
int m=1;
int a=
for (int b=0;b<=
for(char i='a';i<='z';i++)定义字符i在a到z之间。
return c;
2)交运算:定义定义字符i在a到z之间,先将i与a中数据元素进行比较,再将i与b中元素进行比较,如果两次比较都有与i相同的元素,则将该i值插入c中作为输出。
template
seqlist jiao(seqlist a,seqlist b)
seqlist c;
int m=1;
int flag=0;
for(char i='a';i<='z';i++,flag=0)//定义字符i在a到z之间。
return c;
3)差运算:定义字符i在a到z之间,先将i与a中数据元素进行比较,如果相同,再将i与b中元素进行比较,,如果不同则将i插入c作为输出。
template
seqlist cha(seqlist a,seqlist b)
seqlist c;
int m=1;
int flag=0;
for(char i='a';i<='z';i++,flag=0)//定义字符i在a到z之间。
if(flag==0)
如果不同则将i插入c
m++;break;
return c;
4、main函数。
int main()
char a[50];
char b[50];
cout<<"set1:";输入set1数据。
'/0');所给数据中有空格,所以不能直接用cin
cout< cout<<"set2:";输入set2数据。
cout< seqlist a(a,50),b(b,50),c,d,e;
c=bin(a,b);/调用集合的并运算。
cout<<"set1∪set2=";
cout< d=jiao(a,b);/调用集合的交运算。
cout<<"set1∩set2=";
cout< e=cha(b,a);/调用集合的差运算。
cout<<"set1-set2=";
cout< return 0;
六、调试分析。
包括调试过程中遇到的问题及解决的方法、算法的时间空间复杂性分析、经验体会。
七、 用户使用说明。
详细列出每一步的操作说明。
1、 输入set1的数据。
2、 输入set2的数据
3、 分别输出 set1∪set2=
set1∩set2=
set1-set2=
八、 测试结果。
九、附录:程序设计源**。
#include
using namespace std;
const int maxsize=200; /maxsize是顺序表中最大项数。
template //定义模板类seqlist
class seqlist
public:
seqlist无参构造函数
seqlist(t a,int n); 有参构造函数。
seqlist(const seqlist &a);/a中元素固定不变。
int length();求线性表的长度
t get(int i); 按位查找,取线性表的第i个元素
int locate(t item);/查找元素item
void insert(int i, t item); 在第i个位置插入元素item
t delete(int i); 删除线性表的第i个元素
void display();遍历线性表,按序号依次输出各元素
int empty();判断线性表是否为空表。
void clear();清空线性表。
private:
t data[maxsize]; 存放数据元素的数组
int length; /线性表的长度
;//存储结构定义。
template
seqlist::seqlist()
length=0;
//无参构造函数实现,初始化表,置表的长度为0
template
seqlist::seqlist(t a,int n)
if (n>maxsize) throw "数组元素个数不合法";
for (int i=0; i data[i]=a[i];
length=n;
//有参构造函数实现。
template
seqlist::seqlist(const seqlist &a)
for (int i=0; i< i++)
data[i]=
数据结构课程设计
课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 2008 年6月 2日至 2008 年 6月 6 日。目录。1 问题描述 2 1.1 题目内容 2 1.2 基本要求 2 1.3 测试数据 2 2...
数据结构课程设计
数据结构 课程设计。实验报告。学院 信息工程学院。班级 姓名 学号 指导老师 题目2 一元多项式的计算。1 实验目的。1 掌握链表的灵活运用 2 学习链表初始化和建立一个新的链表 3 知道怎样去实现链表删除结点操作与插入结点 4 理解链表的基本操作 包括数据域数据的相加 并能灵活运用。2 实验内容。...
数据结构课程设计
班级 信计 1102 姓名 李娜娜。学号 1108060209 设计日期 2013.07.15 西安科技大学计算机学院 1.实验题目 编制一个演绎扫雷游戏的程序。2.问题描述。做一个n x m的扫雷游戏,每个方格包含两种状态 关闭 closed 和打开 opened 初始化时每个方格都是关闭的,一个...