集合的并交差运算分析

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

《数据结构》

课程设计说明书

题目集合的并交差运算

学号

姓名

指导教师康懿

日期2015年7月2日

内蒙古科技大学课程设计任务书

目录

目录 (3)

第1章需求分析 (4)

第2章总体设计 (4)

第3章抽象数据类型定义 (5)

3.1 LinkList抽象数据类型的设计 (5)

3.2 集合抽象数据类型的设计 (5)

第4章详细设计 (5)

4.1 工程视图 (5)

4.2 类图视图 (6)

4.3 主要算法的详细设计 (6)

4.3.1 插入算法的详细设计 (7)

4.3.2 清除算法的详细设计 (7)

4.3.3 求交集算法的详细设计 (7)

4.3.4 求并集算法的详细设计 (8)

4.3.5 求差集算法的详细设计 (9)

第5章测试 (9)

第6章总结 (11)

附录:程序代码 (11)

第1章需求分析

1、本演示程序中,集合的元素限定为小写字母字符[“a”…”z”]。集合输入的形式为一个以“0

“为结束标志的字符串,串中字符顺序不限。

2、演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息“之后,

由用户在键盘上输入演示程序中规定的运算命令;相应的输入数据和运算结果显示在其后。

3、程序执行的命令包括:

1)构造集合A;2)构造在集合B;3)删除集合A内的元素;4)删除集合B内的元素;5)在集合A中插入元素;6)在集合B中插入元素;7)求AB集合的并集;8)求AB集合的交集;9)求AB及BA的差集

第2章总体设计

总体设计框架图,如图2.1所示:

图2.1 总体设计框架

第3章抽象数据类型定义

定义格式如下:

3.1LinkList抽象数据类型的设计

ADT LinkList

基本操作:

InitList(LinkList *L)

构造一个空的线性表L

DestroyList(LinkList *L)

初始条件:线性表L已存在

ListEmpty(LinkList L)

初始条件:线性表L已存在。操作结果:若L为空表,则返回TRUE,否则返回FALSE Status ListInsert(LinkList L,int i,ElemType e)

在带头结点的单链线性表L中第i个位置之前插入元素e

ListPrint(LinkList L)

依次输出链表中的元素

3.2集合抽象数据类型的设计

typedef struct LNode

{

char data;

struct LNode *next;

}LNode, *LinkList;

第4章详细设计

4.1工程视图

图4.1 工程视图4.2类图视图

图4.2 类图视图4.3主要算法的详细设计

4.3.1插入算法的详细设计

void ListSort(LinkList L)

{

LinkList first; /*为原链表剩下用于直接插入排序的节点头指针*/

LinkList t; /*临时指针变量:插入节点*/

LinkList p; /*临时指针变量*/

LinkList q; /*临时指针变量*/

first = L->next; /*原链表剩下用于直接插入排序的节点链表*/

L->next = NULL; /*只含有一个节点的链表的有序链表。*/

while (first != NULL) /*遍历剩下无序的链表*/

{

/*插入排序*/

for (t = first, q = L; ((q!=NULL) && (q->data < t->data)); p=q, q=q->next); /*无序节点在有序链表中找插入的位置*/

/*退出for循环,就是找到了插入的位置*/

first = first->next; /*无序链表中的节点离开,以便它插入到有序链表中。*/

if (q == L) L = t; /*插在第一个节点之前*/

else p->next = t; /*p是q的前驱*/

t->next = q; /*完成插入动作*/

}

4.3.2清除算法的详细设计

void qingchu(LinkList La)/*清除链表中相同的元素*/

{

char i,j;

LinkList p,q;

La->next;

p=La;

q=p->next;

while(q)

{i=p->data;

j=q->data;

if(i==j)

{q=p->next; /* 删除并释放结点*/

p->next=q->next;

free(q);

}

p=p->next;

q=p->next;

}

}

4.3.3求交集算法的详细设计

void Jiaoji(LinkList La,LinkList Lb,LinkList Lc)

{/*求两集合的交集,将结果存入另一个链表中*/

char i,j;

LinkList p ,q;

La->next;

Lb->next;

相关文档
最新文档