数据结构大作业参考答案讲诉.docx

上传人:b****6 文档编号:4539030 上传时间:2022-12-01 格式:DOCX 页数:21 大小:182.12KB
下载 相关 举报
数据结构大作业参考答案讲诉.docx_第1页
第1页 / 共21页
数据结构大作业参考答案讲诉.docx_第2页
第2页 / 共21页
数据结构大作业参考答案讲诉.docx_第3页
第3页 / 共21页
数据结构大作业参考答案讲诉.docx_第4页
第4页 / 共21页
数据结构大作业参考答案讲诉.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

数据结构大作业参考答案讲诉.docx

《数据结构大作业参考答案讲诉.docx》由会员分享,可在线阅读,更多相关《数据结构大作业参考答案讲诉.docx(21页珍藏版)》请在冰豆网上搜索。

数据结构大作业参考答案讲诉.docx

数据结构大作业参考答案讲诉

数据结构大作业

只收手工纸面版,统一用学院的实验稿纸。

自留底稿,不退。

十一、讨论题:

顺序存储和链表存储的优缺点对比分析。

答:

顺序存储的优点是可以做到“随机访问”,缺点是动态操作时间效率低下;

链表存储的优点是动态操作高效,不会引起数据的移动,缺点是只能进行“顺序访问”,

不能进行“随机访问”。

十二、讨论题:

循环队列解决了什么问题?

优点是什么?

如何巧妙地实现环状?

答:

循环队列解决了简单的队列的顺序存储的“假溢出”问题。

它的优点是:

相对于一般的顺序存储队列,它不用移动数据就解决了“假溢出”问题,这样就提高了时间效率,此外,它通过求模运算可以成功求出入队、出队的地址,通过牺牲一个空间成功判断了队空和队满两种情况。

实现过程:

通过求模运算求出入队、出队的地址:

rear=(rear+1)%MaxSize;

front=(front+1)%MaxSize(front为队头,rear为队尾,MaxSize为循环队列的长度)。

牺牲一个空间区分了队空和队满两种情况:

front=rear则队空rear+1=front则队满。

十三、讨论题:

一般而言,如何比较递归和非递归算法的优缺点?

答:

递归在算法上比非递归更为简单,且比非递归更为容易理解;而非递归算法也有它的好处,递归用到了栈,要重复调用自己,重复调用自己就意味着要循环,这样,时间效率就低下,非递归算法与之相比,效率就比较高。

十四、讨论题:

常规的排序算法的共同点是什么?

答:

常规的排序算法的共同点是:

逐步缩小待排空间,每次增加一个已排空间。

十五、讨论题:

字符串和线性表的关系是什么?

字符串的操作主要体现在什么方面?

答:

字符串和线性表的关系是:

字符串是一种特殊的线性表。

字符串的操作主要体现在:

一次性处理大量字符。

十六、讨论题:

栈和队列的工作原理以及各自的应用范例?

答:

栈的工作原理:

只允许在栈顶进行数据的插入、删除操作,进栈、出栈也只能在栈顶进行,数据拥有“后进先出”的性质。

应用范例:

用于产生数据逆序,如象棋的悔棋功;也用于保护现场,如递归函数的实现。

队列的工作原理:

在队尾插入数据,在对头删除数据,数据从队尾进队,从队投出队,数据拥有“先进先出”的性质。

应用范例:

基于时间公平的机制所必需的数据结构;是任何需要进行缓冲区处理的比较好的实现方案。

十七、讨论题:

索引存储的特点和优点?

答:

索引存储的特点:

在原始数据外,增加一些所谓的管理家数据,合起来构成一种存储结构,既保存了数据,又保存了关系。

索引存储的优点:

与链表相比,它可以做到数据的随机访问;与线性表相比,它在近行插、删操作时不会引起大批数据的移动;此外,它还可以在一个字符串内部进行插、删操作。

十八、讨论题:

诸如迷宫、八皇后、棋盘等课题使用什么数据结构是比较好的选择?

为什么?

答:

诸如迷宫、八皇后、棋盘等课题使用二维数组比较好。

因为迷宫、八皇后、棋盘等课题数据之间存在各个方向上的关系,二维数组可很好反映这些关系。

此外,棋盘问题涉及到悔棋,故需用到栈;迷宫问题是一个试探和回溯的过程,也应用到栈。

十九、讨论题:

图的邻接表中,挂链的结点中为什么不能存放实际要处理的数据?

答:

图的邻接表中,挂链的结点中不能存放实际要处理的数据是因为:

挂链的结点反映的是

各结点之间的关系(可达或不可达),一般关系不变,它是不会改变的,但若存放实际要处理的数据,结点数据改变,即使关系不变,它也要改变。

二十、讨论题:

哈希存储法真的能做到O

(1)级的查找算法吗?

为什么?

你如何评价这样

的思路。

答:

哈希存储法不能完全做到O

(1)级的查找算法。

哈希存储法是利用函数计算出数据应该存放的地址,存入数据,之后在需要查找数据的时候,还使用同样的函数。

表面上看,是O

(1)级的查找算法,但是,由于无论哪一种函数,它在计算地址时,或多或少都会产生冲突,这就需要通过拉链法或建立一个公共溢出区来解决,而在查找的过程中,对于冲突的数据,就不能通过函数一次找到,而还要进行比较,这样,算法就不为O

(1)级的。

虽然哈希存储法不能完全做到O

(1)级的查找算法,但由于所选函数往往能保证大部分数据不会发生冲突,冲突的只是少部分,最终的查找效率依然是很高的。

 

单选题复习用

1、数据结构除了研究数据本身如何表示和存储外,还需要重点研究数据___________D_____。

(A)的数量(B)的质量(C)的属性(D)之间的关系

2、以下哪种逻辑结构重点表示数据之间的层次关系。

B

(A)线性结构(B)树形结构(C)图形结构(D)集合结构

3、以下哪种存储结构主要是通过增加新的管理数据来同时保证读取数据的高速和动态修改数据的高速。

C

(A)顺序存储(B)链接存储(C)索引结构(D)哈希存储

4、遍历操作是对某个数据结构中所有数据需要做到__A____的访问。

(A)至少一次且至多一次(B)可以多次

(C)大部分一次,部分可以重复(D)二次

5、下面哪一句话是正确的。

C

(A)算法就是可以运行的程序

(B)算法是程序的总结,只能用中文表示

(C)算法是表示一种解决问题的思路

(D)算法最好用英语表示,这样可以很快切换成程序。

6、一个满二叉树共有三层,问有几个结点?

C

(A)5(B)6(C)7(D)8

7、结点个数为4个的无向完全图的边数是多少条?

B

(A)5(B)6(C)7(D)8

8、实现函数调用返回点管理应该用数据结构__C_____。

(A)二叉树(B)图(C)栈(D)队列

1、二分查找法适合__C____。

(A)适合顺序表和链表等结构(B)数据不需要排序,但是必须顺序存储

(C)仅仅把数据排序后的顺序表(D)二叉树和图

2、在字符串结构中,哪一个是进行查找操作?

D

(A)求子串(B)串比较(C)串遍历(D)子串定位

3、在字符串的索引结构中,哪一个操作没有对原始数据区进行处理?

A

(A)插入字符(B)删除字符串(C)删除行(D)修改字符

4、一个m*n的矩阵,用列优先存储,元素A(i,j)存储在位置k上,在横向关系上的直接前驱在一维数组中一般地址为(约定每一个元素仅仅占一个单元):

(A)k+1(B)k-1(C)k+m(D)k-m

5、用建立大根堆来进行排序,最后的结果是什么?

B

(A)升序(B)降序(C)逆序(D)不一定

6、图结构的遍历操作中,一般采用什么机制可以最简单地避免再次访问已经被访问过的结点。

C

(A)计算是否有环路(B)计数器(C)标志位(D)哈希函数

7、如果一个程序在内存中某批数据时进行插入和删除操作非常频繁,则建议使用哪种存储结构?

C

(A)顺序(B)链接(C)索引(D)哈希

8、下面哪个操作不是动态操作?

D

(A)修改(B)插入(C)删除(D)查找

9、如果一个算法的时间效率和数据量无关,用哪种符号表示?

A

(A)O(c)(B)O

(1)(C)O(n)(D)O(x)

10、递归的算法包括哪两个环节C

(A)前进和撤退(B)上升和下降(C)进入和回退(D)变大和变小

11、二叉树的一种遍历名称,其编程实现时一般需要队列的帮助。

D

(A)先根遍历(B)后根遍历(C)深度遍历(D)层次遍历

12、递归程序看似简洁,但是其运行必须启用下面的某种数据结构来管理。

B

(A)字符串(B)栈(C)森林(D)最优二叉树

13、在一个带权连通图G中,权值最小的边一定包含在G的_____生成树中。

D

(A)广度优先(B)深度优先(C)最小(D)任何

14、对称矩阵如果只存储下三角的数据时,可以减少存储量:

C

(A)一半(B)多于一半(C)少于一半(D)大约2/3

15、稀疏矩阵m*n中有k个非零元素,用三元组存储时,需要多少单元的存储量?

D

(A)m*n*3(B)k+3(C)k*3(D)k*3+3

16、迷宫程序位置移动如果也考虑斜向45度关系,那么某一个位置可以移动走的坐标(不考虑边界等意外因素)有几个?

D

(A)2(B)4(C)6(D)8

17、图的邻接表中存储关系数据采用了什么存储结构?

C

(A)顺序存储结构(B)链式存储结构(C)索引存储结构(D)散列存储结构

18、三个数据(A,B,C)通过栈的处理(一次进栈和出栈)不能得到的一种出栈序列是:

C

(A)(A,B,C)(B)(A,C,B)(C)(C,A,B)(D)(C,B,A)

1、计数器减一D

(A)i++(B)i=k-1(C)i=count(i)-1(D)i=i-1;

2、c语言程序开始运行的入口函数为D

(A)intopen()(B)intstart()(C)intmian()(D)intmain()

3、地址编号为10100的一个语句调用了一个函数,那么为了能正确的返回,必须启用什么机制?

C

(A)在被调用函数最后一句写上return(10101)

(B)启用一个标志位,管理返回点

(C)启用一个栈,管理返回点

(D)通知机房工作人员,请求帮助

4、以下的语句是什么功能?

p=p->next;A

(A)指针p向其直接后继移动(B)p的值减去next的值

(C)指针p向其直接前驱移动(D)判断p是否大于next的值

5、c语言(不是c++)中申请一个新结点是什么语句?

D

(A)newnode=NEWnode;(B)newnode=NewOneNode;

(C)newnode=malloc(Node);(D)newnode=(Link*)malloc(sizeof(Node));

6、c语言(不是c++)中输出结点中的数据是什么语句?

B

(A)printdata;(B)printf("[%d,%d],Pointer->Number,Pointer->Total);

(C)print(p->data);(D)cout(p->data);

7、c语言(不是c++)中输入数据是什么语句?

C

(A)inputdata;(B)cin(data):

(C)scanf("%d",&data);(D)scanf("%d",data);

8、顺序栈进栈的主要动作为:

B

(A)先写入数据,再移动top(B)直接填入数据到合法地址即可

(C)先移动top,再写入数据(D)把数据填入最边界的单元中

9、哪一个是合法的一维顺序表地址计算公式?

B

(A)locAi=locA1+i(B)ai=loc(a0)+i*d

(C)i=loc(A0)-d(D)Loc(Ai)=Loc(A1)-(i-1)*d

10、环队结构出队产生下一个合法地址的语句是:

D

(A)f=f+1(B)f=(f+1)%MaxSize

(C)f=f+MaxSize(D)rear=(rear+1)%M

1、Windows操作系统中在外存硬盘上的文件采用的哪种数据结构的构造思想?

(A)线性链表(B)哈希表(C)十字链表(D)索引文件

2、象棋程序中棋盘表示、悔棋功能、复盘功能对应的三种底层数据结构为:

C

(A)广义表+树+三元组(B)线性表+栈+字符串

(C)二维数组+栈+队列(D)图+队列+最优二叉树

3、一个小型机的机房中,有10位老师在做科研,有30位博士和硕士在做设计,有300名学生在做实验。

请问对该小型机的CPU时间片管理应该采用哪种策略是最佳方案?

(A)启用先到先服务的队列机制(B)启用能表示层次结构的树

(C)启用分块的哈希表(D)启用优先级系数和队列排队结构

4、(c语言中)从键盘输入一个数学表达式,现在要把该表达式进行存储,此时如何定义这个结构的数据类型?

B

(A)二叉树(B)字符串(C)字符数组(D)整型

5、AOV网需要产生拓扑排序,其数据结构必须是?

(A)无向图(B)有向无环图(C)森林(D)线性表

6、如果要求编程计算多项式的和,存储多项式的最佳存储结构是什么?

A

(A)链表(B)数组(C)哈希(D)集合

7、如果一个无向图,需要用相对节省空间的方式存储其中的关系信息,那么建议采用什么方案?

D

(A)设法使该图的边非常少,从而可以启用三元组

(B)有边的才用链表表示,临时申请结点

(C)继续用二维数组存储,但是遇到0的时候空置其存储单元

(D)先用二维数组表示然后改为只存储下三角矩阵的数据结构

8、推箱子小游戏、迷宫等底层设计中布局应该启用什么数据结构?

C

(A)图(B)集合(C)二维数组(D)一维数组

9、哪种高级语言的代码构造结构是广义表?

(A)c++(B)Lisp(C)c(D)java

10、为了表示军队、公司等层次化管理机制,应该采用哪种数据结构表示?

C

(A)图(B)二叉树(C)树(D)字符串

一、已知有4个元素为:

12,33,40,51。

用单链表(约定头指针为head,新结点指针为new,

搜索指针为p)从左到右依次存储。

分别画出

(1)进栈39

(2)进队39

(3)有序表插入39等三种情况的工作示意图。

并标注上改链的次序和主要的工作语

句。

(1)进栈39

head

 

new

主要的工作语:

new->next=head->next;

head->next=new;

 

(2)进队39

head

rear

 

new

 

主要的工作语:

new->next=NULL;

rear->next=new;

rear=new;

 

(3)有序表插入39

headp

 

new

主要的工作语:

new->next=p->next;

p->next=new;

 

二、自己画一个6*7的稀疏矩阵(比如:

非0元只有4个)。

画出三元组表示法。

并画出对

应的转置矩阵的三元组。

6

7

7

0

4

2

1

0

1

2

1

8

2

6

5

3

4

4

5

2

1

5

5

3

6

7

7

0

1

1

1

2

8

2

5

1

4

0

2

4

3

4

5

5

3

6

2

5

0000200

1000000

0800005

0000400

0000000

0010030

 

稀疏矩阵三元组压缩存储转置矩阵的三元组

 

三、画出表达式8-6*3/(2-1)的二叉树表示。

写出四种遍历的结果。

画出利用栈进行计算的完整过程。

表达式8-6*3/(2-1)的二叉树表示图

 

 

前根遍历:

-8/*63–21

中根遍历:

8–6*3/2-1

后根遍历:

863*21-/-

 

利用栈进行计算的完整过程:

 

操作数8,6,3依次进栈

top

 

操作数3,6出栈,计算6*3,结果进栈

top

操作数2,1依次进栈

top

 

操作数1,2出栈,计算2-1,结果进栈

top

 

计算结果1,18出栈,计算18/1,结果进栈

top

 

计算结果18,操作数8出栈,计算8-18结果进栈

top

 

-10出栈即为表达式的值。

四、图的存储结构。

自己画一个图,至少五个结点,多条边。

画出邻接矩阵和邻接表示意图。

 

010100

001001

010001

000010

000000

000010

有向图邻接矩阵

1

2

3

4

5

6

邻接表示意图

五、树、二叉树、森林的互相转换。

自己画一个有三层深度、树的度为3的一棵树,改划成

二叉树。

有三层深度、树的度为3的一棵树

 

改链

 

 

 

拉直

 

旋转形成二叉树

 

六、最优二叉树的建立。

权值序列:

25、12、27、6、15

152527

 

 

 

2527

 

 

 

 

 

生成的最优二叉树

七、二分查找法的示意图。

自己产生十个数据。

画出其中一个元素查找成功的过程。

12

6

18

15

21

28

25

30

36

9

查找30。

126181521282530369

126181521282530369

126181521282530369

126181521282530369

126181521282530369

八、哈希查找法。

对于数据序列39、24、15、7、16、10。

哈希函数为hash(x)=xmod9。

假设冲突采用挂链法。

画出完整的示意图。

012345678

 

 

 

 

 

 

 

 

 

挂链法示意图

九、快速排序法。

对于数据序列45、12、78、35、49、87、26、95。

画出第一轮排序的过

程。

叙述主要的算法思路。

以45作为第一轮的基准数据

4512783549872695

2612783549874595

2612453549877895

261235(45)49877895

十、堆排序。

对于数据序列15、24、72、35、49、25、64。

画出对应的顺序存储示意图。

画出对应的完全二叉树。

画出初始大根堆。

画出初始大根堆对应的存储结构。

画出产生已排

序空间一个数据的逻辑结构示意图。

15247235492564待排数据为线性表,启用顺序存储

 

15

24

72

35

49

25

64

0号单元空置,此存储相当于二叉树顺序存储

 

对应的原始完全二叉树

 

第一次全部处理完毕时的初始堆

初始堆对应的存储结构

 

72

49

64

35

24

25

15

 

15

49

64

35

24

25

72

第一个数据和最后一个数据交换后的效果

154964352425(72)

产生已排序空间一个数据的逻辑结构示意图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1