数据结构课程设计_集合的并、交和差运算 下载本文

一、课程题目 集合的并、交和差运算 二、问题描述

功能: 编制一个能演示执行集合的并、交和差运算的程序。 三、基本要求

1)集合的元素限定为小写字母字符【‘a’..‘z’】 2)演示程序以用户和计算机的对话方式执行。 四、测试数据

(1) Set1=”magazine”, Set2=’paper”,

Set1∪Set2=”aegimnprz”,Set1∩

Set2=”ae”,Set1-Set2=”gimnz”;

(2) Set1=”012oper4a6tion89”,Set2=”error data”, Set1∪Set2=”adeinoprt”,Set1∩Set2=”aeort”, Set1-Set2=”inp”. 五、算法思想

为了实现上述程序的功能,应以有序链表表示集合。为此,需要两个抽象数据类型:有序表和集合。 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。 六、模块化分 本程序抱含四个模块:

1) 节点结构单元模块——定义有序表的节点结构; 2) 有序表单元模块——实现有序表的抽象数据类型; 3) 集合单元模块——实现集合获得抽象数据类型; 4)主程序模块: Void main(){ 初始化; do{ 接受命令; 处理命令;

}while(“命令”!=“退出”);

}

七、源程序 # include #include #include #include typedef struct node {

}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(); int data; struct node* next;