数据结构课程设计

发布 2022-10-01 21:13:28 阅读 1872

本科生课程设计**。

题目:集合的并交差运算。

学生姓名:

学号:专业:计算机科学与技术。

班级: 指导教师:

2024年6 月 23 日。

目录。课程设计任务书2

1. 需求分析3

2. 概要设计3

3. 详细设计说明3

3.1设计结构3

3.2函数解析4

3.2.1构造函数4

3.2.2排序函数5

3.2.3 插入,删除,查找函数6

3.2.4 并交差运算函数6

3.2.5 输出函数7

3.2.6集合操作函数7

4.程序运行结果8

5.总结96.附页—程序**10

7.参考文献14

1. 需求分析:

设计要求建立集合,并且能够对集合进行输入和输出,插入,删除,查询合中的元素,此外还能进行集合间的并,交,差预算。因此用一个类创建的对象最为一个集合体,并在类中添加对集合操作插入,删除,查询,并交差运算的成员函数。通过对象调用成员函数实现集合各种操作功能。

2.概要设计:

首先设计一个结构体struct node作为集合各元素的存储节点。接着设计集合类class group,用链表存储集合,通过构造函数创建集合链表,并通过class group类的成员函数实现对集合插入,删除,查找和集合间的并交差运算,并交差运算使用运算符的重载。

集合类class group 将结构体struct node的指针l和整数变量n作为数据成员,其中l是集合链表的头指针同时也是链表的第一个数据节点,n用来记录集合中的元素个数。

集合类class group的成员函数包括如下成员。

1. group()/无参构造函数。

2. group(int k)//有参构造函数。

3. ~group()/析构函数。

4. void setingque();排序函数。

5. void outplay();输出函数

6. void insert(int k);/插入函数

7. group delete(int k);/删除函数

8. void search(int k);/查找函数。

9. group operator+(group t);/并运算。

10. group operator-(group t);/差运算。

11. group operator*(group t);/交运算。

通过以上函数实现对集合的插入,删除,查找,以及并,交,差运算。

除了class group类外,还有一个对集合进行修改和运算的操作函数group operater(group t)它有主函数void main()直接调用。

3.详细设计说明:

3.1:整个程序设计的机构如下图,图1.3.1-1所示。

图 1.3.1-1 程序设计结构图。

3.2 函数解析:

3.2.1构造函数:

group()

group(int k)

group类中有两个构造函数,无参和有参构造函数,无参构造函数用于创建空集合,有参构造函数用于创建非空集合,其实现**如下。

group(int k)

形参k传递的是集合中元素的个数,通过for语句创建k个元素节点用动态创建的结构体*p来接收每个节点然后将其插入到头结点为l的集合链表链头。

3.2.2 排序函数函数。

void setingque();

通过有参构造函数创建的集合中的的元素是无序的,这样不仅对集合的操作不方便,而且集合的输出也不太美观,为了解决此问题group类中特地添加了排序函数void setingque();其算法实现采用的是冒泡排序法,在此就不对其进行解析。

3.2.3 插入,删除,查找函数。

void setingque();

void outplay();

void insert(int k);

group delete(int k)

集合一次性创建完成之后,创建有可能不符合预先的要求此时就要对集合进行修改,group 类提供了插入:void insert(int k); 删除sgroup delete(int k); 查找void search(int k);这三个成员函数,这三个函数的实现方法非常的相似,就以插入函数为例,其**如下所示:

void group:: insert(int k)

else {cout<<"警告!插入的内容已存在!"<通过参数k将要插入的元素值传递到插入函数,先在目标集合中查看待插入元素是否已存在,如果不存在就将该元素插入到集合链表,如果已存在则退出插入函数并输出“警告!

插入内容已存在!”的警告。

删除函数与此类同,先查找若找到了就将其节点删除,若找不到退出并输出警告。

3.2.4 并交差运算函数。

group operator+(group t);/并运算。

group operator-(group t);/差运算。

group operator*(group t);/交运算。

集合的并交差运算是两个链表间的运算,为了表示的更加直观简洁,采用了运算运算符的重载用“+”表示两集合和“并运算”,“表示两集合“交运算”,“表示两集合的“差运算”。

以交运算为例:

group group:: operator*(group t)

group s; groupnode *p,*q,*t;

p=l;while(p!=null)

if(q)

if(<<交集为空!!"先创建新对象s用来存放两集合运算结果,将集合la中的元素逐个与集合lb中的元素做比较如果存在相等的元素则将其插入到s对象的链表中,否则跳过该元素进行下一个知道la结束为止,然后返回对象s。

数据结构课程设计

课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 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 初始化时每个方格都是关闭的,一个...