数据结构课程设计报告--集合的并、交和差运算

淡忘如思 范文 报告范文
精选回答

数据结构课程设计报告--集合的并、交和差运算本文简介:合肥学院计算机科学与技术系课程设计报告2012~2013学年第二学期课程数据结构与算法课程设计名称集合的并、交和差运算学生姓名张文浩学号1104032028专业班级11网工2班指导教师何立新华珊珊2013年6月题目:集合的并、交和差运算【问题描述】编制一个能演示执行集合的并、交和差运算的程序。【基本

数据结构课程设计报告--集合的并、交和差运算本文内容:

合肥学院

计算机科学与技术系

课程设计报告

2012~2013学年第二学期

课程

数据结构与算法

课程设计名称

集合的并、交和差运算

学生姓名

张文浩

学号

1104032028

专业班级

11网工2班

指导教师

何立新

华珊珊

2013年

6月

题目:

集合的并、交和差运算

【问题描述】

编制一个能演示执行集合的并、交和差运算的程序。

【基本要求】

(1)

集合的元素限定为小写字母字符

[‘a’’z’]

(2)

演示程序以用户和计算机的对话方式执行。

【测试数据】

(1)Set1=“magazine“,Set2=“paper“,

Set1∪Set2=“aegimnprz“,Setl

∩Set2=“ae“,Set1-Set2=“gimnz“。

(2)Set1=

“012oper4a6tion89“,Set2=“error

data“,

Set1∪Set2=“adeinoprt“,Setl

∩Set2=“aeort“,Set1-Set2=“inp“。

【实现提示】

以有序链表表示集合。

【选作内容】

(1)

集合的元素判定和子集判定运算。

(2)

求集合的补集。

(3)

集合的混合运算表达式求值。

(4)

集合的元素类型推广到其他类型

甚至任意类型。

一、

实验内容

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

需求分析:

1、

本演示程序中,集合的元素限定为小写字母字符[“a”…”z”]。集合输入的形式为一个以“回车符“为结束标志的字符串,串中字符顺序不限。

2、

演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息“之后,由用户在键盘上输入演示程序中规定的运算命令;相应的输入数据和运算结果显示在其后。

3、

程序执行的命令包括:

1)

构造集合1;2)构造在集合2;3)求并集;4)求交集;5)求差集;6)返回;7)结束。“构造集合1”和“构造集合2”时,需以字符的形式键入集合元素。

二、数据结构设计

为了实现上述程序的功能,应以有序链表表示集合。为此,需要两个抽象数据类型:有序表和集合。

1、有序表的抽象数据类型定义为:

readdata(pointer

head)

初始条件:head是以head为头节点的空链表。

操作结果:生成以head为头节点的非空链表。

pop(pointer

head)

初始条件:head是以head为头节点的非空链表。

操作结果:将以head为头节点的链表中数据逐个输出。

2、集合的抽象数据类型定义为:

and(pointer

head1,pointer

head2,pointer

head3)

初始条件:链表head1、head2、head3已存在

操作结果:生成一个由head1和head2的并集构成的集合head3。

or(pointer

head1,pointer

head2,pointer

head3)

初始条件:链表head1、head2、head3已存在

操作结果:生成一个由head1和head2的交集构成的集合head3。

differ(pointer

head1,pointer

head2,pointer

head3)

初始条件:链表head1、head2、head3已存在

操作结果:生成一个由head1和head2的差集构成的集合head3。

3、本程序抱含四个模块:

1)

节点结构单元模块——定义有序表的节点结构;

2)

有序表单元模块——实现有序表的抽象数据类型;

3)

集合单元模块——实现集合获得抽象数据类型;

4)主程序模块:

Void

main(){

初始化;

do{

接受命令;

处理命令;

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

}

三、算法设计

#include

#include

typedef

struct

LNode//定义结构体类型指针

{

char

data;

struct

LNode*next;

}*pointer;

void

readdata(pointer

head)//定义输入集合函数

{

pointer

p;

char

tmp;

scanf(“%c“,while(tmp!=

\n

)

{

p=(pointer)malloc(sizeof(struct

LNode));

p->data=tmp;

p->next=head->next;

head->next=p;

scanf(“%c“,}

}

void

pop(pointer

head)//定义输出集合函数

{

pointer

p;

p=head->next;

while(p!=NULL)

{

printf(“%c“,p->data);

p=p->next;

}

printf(“\n“);

}

void

and(pointer

head1,pointer

head2,pointer

head3)//定义集合的并集函数

{

pointer

p1,p2,p3;

p1=head1->next;

while(p1!=NULL)

{

p3=(pointer)malloc(sizeof(struct

LNode));

p3->data=p1->data;

p3->next=head3->next;

head3->next=p3;

p1=p1->next;

}

p2=head2->next;

while(p2!=NULL)

{

p1=head1->next;

while((p1!=NULL)

if

(p1==NULL)

{

p3=(pointer)malloc(sizeof(struct

LNode));

p3->data=p2->data;

p3->next=head3->next;

head3->next=p3;

}

p2=p2->next;

}

}

void

or(pointer

head1,pointer

head2,pointer

head3)//定义集合的交集函数

{

pointer

p1,p2,p3;

p1=head1->next;

while(p1!=NULL)

{

p2=head2->next;

while((p2!=NULL)

if((p2!=NULL)

p3->data=p1->data;

p3->next=head3->next;

head3->next=p3;

}

p1=p1->next;

}

}

void

differ(pointer

head1,pointer

head2,pointer

head3)//定义集合的差集函数

{

pointer

p1,p2,p3;

p1=head1->next;

while(p1!=NULL)

{

p2=head2->next;

while((p2!=NULL)

if(p2==NULL)

{

p3=(pointer)malloc(sizeof(struct

LNode));

p3->data=p1->data;

p3->next=head3->next;

head3->next=p3;

}

p1=p1->next;

}

}

void

main()//主函数

{

int

x;

printf(“(输入数据,按回车键结束,第一个集合大于第二个集合)\n“);

pointer

head1,head2,head3;

head1=(pointer)malloc(sizeof(struct

LNode));

head1->next=NULL;

head2=(pointer)malloc(sizeof(struct

LNode));

head2->next=NULL;

head3=(pointer)malloc(sizeof(struct

LNode));

head3->next=NULL;

printf(“请输入集合1:\n“);

readdata(head1);//调用输入集合函数

printf(“请输入集合2:\n“);

readdata(head2);//调用输入集合函数

A:printf(“1.并集

2.交集

3.差集

4.结束

x.重新运算\n“);

do{

printf(“请选择序号\n“);

scanf(“%d“,switch(x)

{

case

1:

printf(“两集合的并是\n“);

and(head1,head2,head3);//调用并集函数

pop(head3);

head3->next=NULL;

break;

case

2:

printf(“两集合的交是\n“);

or(head1,head2,head3);//调用交集函数

pop(head3);

head3->next=NULL;

break;

case

3:

printf(“两集合的差是\n“);

differ(head1,head2,head3);//调用差集函数

pop(head3);

head3->next=NULL;

break;

case

4:break;

default:goto

A;

}

}while(x!=4);

}

四、测试数据及程序运行情况

运行时提示输入:

输入集合1:asd

输入集合2:asf

根据提示输入运算类型:1.并集

2.交集

3.差集

4.结束

x.重新运算

输入1,输出”fasd”

输入2,输出”as”

输入3,输出”d”

输入4,输出”press

any

key

to

continue”(结束)

输入其他数,输出”

1.并集

2.交集

3.差集

4.结束

x.重新运算”(重新选择运算类型)

下面是运行时的界面(附图):

五、参考资料

[1]

王昆仑,李红.

数据结构与算法.

北京:中国铁道出版社,2006年5月。

[2]

陈朔鹰,《C语言程序设计习题集(第二版)》,人民邮电出版社,2003.2

[3]

严蔚敏

吴伟民.

《数据结构(C语言版)

》.

北京:

清华大学出版社,2009

[4]

姜仲秋,《C语言程序设计》,南京大学出版社,1998.1

[5]

朱振元.

《数据结构(C++语言描述)

》.

北京:

清华大学出版社,2007

[6]

美]Paul

S.

R.

Chishohm等著,张芳妮

吕波译,《C语言编程常见问题解答清华大学出版社》,1996.12

久违伊人容 2022-06-28 18:47:34

相关推荐

蚍蜉撼树是什么意思蚍(蚍蜉撼树是什么意思)

1、蜉蝣树(拼音pfhnsh)是中国成语,蜉蝣树(蜉蝣:一种大蚂蚁;Shake:摇动)比喻力量本来就很弱,但是你想摇动一个很强大的东西,就不能随心所欲了。这个成语一般用作主语、谓语、宾语,属于主谓式,含有贬义。...
展开详情

得意洋洋,反义词(得意洋洋的反义词)

1、得意洋洋的反义词有郁郁寡欢的,有空虚进取的书,有哭天抢地的,有郁郁寡欢的,有失意的,有垂头丧气的,有谦虚谨慎的,有黯然销魂的,有抑郁的。2、“得意”是中国成语,读作:dyyngyng,解释为:得意:明白意图...
展开详情

如法炮制的意思和造句(如法炮制)

1、如法炮制(拼音:rfpozh)是一个成语,起源于西汉的司马迁《史记魏世家》。2、如法炮制(炮制:一种将中药焙炒的方法)是指按照制造方法制造中药;比喻按照现成的方式办事。一般在句子中做谓语、定语、状语。3、出...
展开详情

阳春白雪和下里巴人最初指的是什么(春白雪)

1、杨春白雪。2、杨春白雪,中国的一个成语,发音为yngchnbixu,最初指战国时期楚国比较高雅的歌曲,后来指博大精深的文学艺术。3、战国楚宋玉《对楚王问》:“仲英有歌者,其开头为:《对楚王问》《下里》。全国...
展开详情

依草附木的理解(依草附木的意思)

1、草乌,中国成语,拼音为ycofm,意为鬼神有所依靠,善于造化;比喻依靠他人的力量后,作恶多端;也比喻不能自立,依赖他人。从《巫庙》。2、出自五代和纣王的诗《巫庙》:“天有福报,老人为精灵,循草而沾木,无虚妄...
展开详情

精选推荐更多>

有志不在什么

是“有志不在年高”。
有志不在年高:yǒu zhì bù zài nián gāo,意是指年轻人只要有志向,成就不可限量,不在年纪大。也指只要有志向,岁数大了,也可以干出一番事业。
出处:明·许仲琳《封神演义》第二十三回:“樵子抚掌大笑不止,对子牙点头叹曰:‘有志不在年高,无谋空言百岁。’”
释义:樵子拍手大笑不停,对子牙点头叹道:“只要有远大志向,就算年纪大也没事,一个没有远大志向的人,即便活到很大的岁数也是虚度光阴。”
近义词:有志者,事竟成。

孟子认为造就人才的客观因素和主观因素分别是什么

孟子认为造就人才的客观因素是艰苦环境的磨炼,主观因素是思想斗争的折磨。在《生于忧患,死于安乐》中,孟子认为造就人才的客观条件是“苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为”。造就人才的主观条件是“人恒过,然后能改;困于心,衡于虑,而后作;征于色,发于声,而后喻。”
《生于忧患,死于安乐》选自《孟子·告子下》,是一篇论证严密、雄辩有力的说理散文。作者先列举六位经过贫困、挫折的磨炼而终于担当大任的人的事例,证明忧患可以激励人奋发有为,磨难可以促使人有新成就。接着,作者从一个人的发展和一个国家的兴亡两个不同的角度进一步论证忧患则生、安乐则亡的道理。

窥镜而自视的而的用法

“窥镜而自视”的“而”的用法表承接关系。
该句出自西汉·刘向《邹忌讽齐王纳谏》:“窥镜而自视,又弗如远甚。”
译文:(邹忌)再照着镜子看看自己,更觉得远远比不上人家。
赏析:《邹忌讽齐王纳谏》出自《战国策·齐策一》,讲述了战国时期齐国谋士邹忌劝说君主纳谏,使之广开言路,改良政治的故事。文章塑造了邹忌这样有自知之明,善于思考,勇于进谏的贤士形象。又表现了齐威王知错能改,从谏如流的明君形象,和革除弊端,改良政治的迫切愿望和巨大决心。告诉读者居上者只有广开言路,采纳群言,虚心接受批评意见并积极加以改正才有可能成功。

因往晓之的之什么意思

“因往晓之”中“之”是代词,代指人或事。出自《杞人忧天》。
原文节选:又有忧彼之所忧者,因往晓之,曰:“天,积气耳,亡处亡气。若屈伸呼吸,终日在天中行止,奈何忧崩坠乎?”其人曰:“天果积气,日月星宿,不当坠耶?”晓之者曰:“日月星宿,亦积气中之有光耀者,只使坠,亦不能有所中伤。”
译文:杞国有个人担忧天会塌地会陷,自己无处存身,便整天睡不好觉,吃不下饭。又有一个为他的忧愁而担心的人,就去开导他,说:“天不过是积聚的气体罢了,没有哪个地方没有空气的。你一举一动,一呼一吸,整天都在天空里活动,怎么还担心天会塌下来呢?”那个人说:“天如果是气体,日月星辰不就会坠落下来了吗?”开导他的人说:“日月星辰也是空气中发光的东西,即使掉下来,也不会伤害什么。”
这则寓言故事运用对话刻画人物,人物形象分明。故事短小,但寓意深刻,耐人寻味。文章基本以对话构成,言简意赅,逻辑严谨,读来文气贯通。这则寓言也成为后世文人常用的典故,如李白有诗曰“杞国有人忧天倾”,即出于此。
常见热点问答
热点搜索
1-20
21-40
41-60
61-80
81-100
101-120
121-140
141-160
161-180
181-200
作文大全
1-20
21-40
41-60
61-80
81-100
101-120
121-140
141-160
161-180
181-200