集合的并、交和差运算解析.doc
文本预览下载声明
数据结构
课程设计报告
设计题目:
专 业 计算机科学与技术
班 级 计091
学 生 张楠
学 号 3090911020
指导教师
起止时间 2011.7.4~2011.7.9
22011 年 夏季 学期
目录
1.实验内容
实验题目:编制一个演示集合的并、交运算的程序。
题目: 集合运算
功能: 使用链表来表示集合,完成集合的合并,求交集等操作。
分步实施:
初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;
完成最低要求:
进一步要求:
要求:1)界面友好,函数功能要划分好
2)总体设计应画一流程图
3)程序要加必要的注释
4)要提供程序测试方案
程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。
需求分析:
1、? 本演示程序中,集合的元素限定为整形数据。集合输入的形式为一个以“0“为结束标志。
2、? 演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息“之后,由用户在键盘上输入演示程序中规定的运算命令;相应的输入数据和运算结果显示在其后。
3、? 程序执行的命令包括:
1)? 构造集合1;2)构造在集合2;3)求并集;4)求交集;5)求差集;6)返回;7)结束。“构造集合1”和“构造集合2”时,需以整形的形式键入集合元素。
二、数据结构设计及流程图
为了实现上述程序的功能,应以有序链表表示集合。为此,需要两个抽象数据类型:有序表和集合。
1、有序表的抽象数据类型定义为:
input(linklist l)
初始条件:l是以l为头节点的空链表。
操作结果:生成以l为头节点的非空链表。
output(linklist l)
初始条件:l是以l为头节点的非空链表。
操作结果:将以l为头节点的链表中数据逐个输出。
2、集合的抽象数据类型定义为:
heji(linklist A,linklist B,linklist C)
初始条件:链表A、B、C已存在
操作结果:生成一个由A和B的并集构成的集合C。
jiaoji(linklist A,linklist B ,linklist ,C)
初始条件:链表A、B、C已存在
操作结果:生成一个由A和B的交集构成的集合C。
3、本程序抱含四个模块:
1)? 节点结构单元模块——定义有序表的节点结构;
2)? 有序表单元模块——实现有序表的抽象数据类型;
3)? 集合单元模块——实现集合获得抽象数据类型;
4)主程序模块:
Void main(){
初始化;
do{
接受命令;
处理命令;
}while(“命令”!=“退出”);
}
流程图
三、源程序
# includestdio.h
#includestring.h
#includestdlib.h
#includeconio.h
typedef struct node
{
int data;
struct node* next;
}lnode,*linklist;
lnode *init_lnode();
void input(linklist l);
void jiaoji(linklist A,linklist B,linklist C);
void heji(linklist A,linklist B,linklist C);
void chaji(linklist A,linklist B, linklist C);
void output(linklist l);
void main()
{
lnode *a,*b,*c;
a=init_lnode();
b=init_lnode();
c=init_lnode();
printf(求AB集合的交集和并集\n);
printf(请输入A集合的元素:);
input(a);
printf(\n请输入B
显示全部