数据结构课程设计集合运算(完整)解析.doc
文本预览下载声明
电子与信息工程学院数据结构
实 验 报 告
实验名称: 集合的运算
实验类型: 设 计 (验 证、设 计、创 新)
班 级: 2013级电信三班
学 号: 201307014327 姓名: 陆杰
实验时间: 2015 年 6 16 日
指导教师: 伦 成绩:
目录
一 课程设计目的和要求
二 问题描述及分析
三 算法思想和程序的实现概述
3.1 算法思想
3.2 程序的实现概述
四 程序流程图
流程图
五 程序的实现
5.1 主函数
5.2 链表的生成
5.3 集合的输出
5.4 并运算函数
5.5交运算函数
5.6 差函数
六 运行结果分析
6.1 程序主界面
6.2整数集合并运算
6.3 整数集合交运算
6.4 整数集合差运算
6.5 字母集合并运算
6.6 字母集合交运算
6.7 字母集合差运算
6.8 字母和数据集合并运算
6.9 字母和数据集合交运算
6.10 字母和数据集合差运算
6.11 退出程序
七 源代码
八 总结
九 参考文献
一 课程设计目的和要求
目的:深入理解数据结构的基本理论,掌握数据存储结构的设计方法,掌握基于数据结构的各种操作的实现方法,训练对基础知识和基本方法的综合运用能力,增强对算法的理解能力,提高软件设计能力。在实践中培养独立分析问题和解决问题的作风和能力。要求:熟练运用C++语言、基本数据结构和算法的基础知识,独立编制一个具有中等难度的、解决实际应用问题的应用程序。通过题意分析、选择数据结构、算法设计、编制程序、调试程序、软件测试、结果分析、撰写课程设计报告等环节完成软件设计的全过程,不断地完善程序以提高程序的性能。及分析本课程设计中,集合的元素…z],也可以是整数[0,1,…9],集合的大小集合输入的形式为一个以“回车符”为结束标志的字符,允许出现重复字符或非法字符,程序应能自动滤去。输出的运算结果字符串中将不含重复字符或非法字符。 问题描述: 有两个集合A、B,要求它的交集、并集和差集C。用两个链表、存储集合A、B,用链表存储集合C。描述该问题的存储结构,算法,并通过编写程序来实现。 问题分析: 1. 定义一个链表来存储集合元素; 2. 链表L包括数据域和指针域,数据域中存储集合元素,指针域中存储下一个集合元素的位置; 3. 创建若干个基本函数,通过函数调用对链表进行操作,实现集合的交、并、差运算。
五 程序的实现
改程序的实现步骤是定义链表,创建链表,输出链表。利用链表的来存储集合。利用三个函数分别实现课程要求程序实现的求并、求交和差三中运算。现分述如下:
5.1 主函数
void bangzhu(){
printf(\n\t\t\t***********************************);
printf(\n\t\t\t* 求集合的交并差 *);
printf(\n\t\t\t*********************************\n);
}
void main() /* 主函数 */
{
struct set *p,*q,*r;
int m,n,node;
bangzhu();
for(;;)
{
do{
printf(请输入您要选择操作的代码:\n);
printf(1:求两集合的并A∪B\n);
printf(2:求两集合的交A∩B\n);
printf(3:求两集合的差A-B\n);
printf(0:退出该程序\n);
scanf(%d,node);
} while(node0||node3);
if(node==0) exit(1);
printf(\t\t\t/*请输入集合A中元素的个数:*/\n);
scanf(%d,m);
createlist_p(p,m); /* 调用链表生成函数生成A链表 */
printf(\t\t\t/*请输入集合B中元素的个数:*/\n);
scanf(%d,n); /* 调用链
显示全部