数据结构课程设计集合的并、交和差运算 (1)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构

课程设计报告设计题目:

专业计算机科学与技术

班级计091

学生张楠

学号3090911020

指导教师

起止时间2011.7.4~2011.7.9

22011 年夏季学期

目录

1.实验内容

实验题目:编制一个演示集合的并、交运算的程序。

题目:集合运算

功能:使用链表来表示集合,完成集合的合并,求交集等操作。

分步实施:

1.初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2.完成最低要求:

3.进一步要求:

要求:1)界面友好,函数功能要划分好

2)总体设计应画一流程图

3)程序要加必要的注释

4)要提供程序测试方案

1)程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。

需求分析:

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(“命令”!=“退出”);

}

流程图

三、源程序

# include

#include

#include

#include

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 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集合的元素:");

input(b);

printf("\n输入完成\n");

printf("\n按任意键进入主菜单:");

getch();

do

{

char menu[]={"\n\n\n-----☆1.交集运算☆---------\n\n"

"---------☆2和集运算☆---------\n\n"

"---------☆3.差集运算☆---------\n\n"

"---------☆0. 退出☆---------\n\n" };

printf("%s",menu);

printf("\n请在0-3中选择:");

scanf("%d",&sel);

switch(sel)

{

case 1:

printf("AB集合的交集是:");

jiaoji(A,B,C);

output(C);

C->next=NULL;

break;

case 2:

printf("AB的合集是:");

heji(A,B,C);

output(C);

C->next=NULL;

break;

case 3:

chaji(A,B,C);

break;

case 0:

break;

}

}while(sel!=0);

} /*主函数结束*/

/**********初始化函数***************/

lnode * init_lnode()

{

相关文档
最新文档