数据结构 习题纠错(持续更新)

来源:互联网 发布:淘宝两个价格怎么设置 编辑:程序博客网 时间:2024/05/24 05:40

并不是都是错题,带 * 号的为感兴趣的题。

设栈S和队列Q的初始状态为空,元素E1、E2、E3、E4、E5和E6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出列的顺序为E2、E4、E3、E6、E5和E1,则栈S的容量至少应该是( )。
A. 6
B. 4
C. 3
D. 2

解:这里写图片描述
真不知道为什么会做错,那就辛苦自己改一遍吧,你活该。

答案:C

设指针变量top指向当前链式栈的栈顶,则删除栈顶元素的操作序列为()。
A. top = top+1;
B. top = top-1;
C. top->next = top;
D. top = top->next;

解:这里写图片描述
由上图知,顺序栈 与 链栈 就像是一个正着走的时候,另一个就倒着走

入栈:

顺序栈:

    Stack[Top] = data; //赋值    Top++;            //“向前进一步”

链栈:

    p->next = Top;     Top = p;          //“向后倒一步”

出栈:

顺序栈:

    Top--;            //“向后倒一步”

链栈:

    Top = Top->next;          //“向前进一步”

答案:D

7. 设front和rear分别表示顺序循环队列的头指针和尾指针,N为存储该循环队列的数组最大容量,则判断该循环队列为空的条件为_____;判断该循环队列为满的条件为_______________

解:这里写图片描述
如上图,满的时候, rear 在 front 后面

答案:front==rear(rear+1)%N==front

设数组data[m]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作后其头指针front值为()
A.front = front+1
B.front = (front+1)%(m-1)
C.front = (front-1)%m
D.front = (front+1)%m

解:参考上一题的图,队尾插入新元素时,尾指针增1。删除队列头元素时,头指针增1

答案:D

后缀算式9 2 3 +- 10 2 / -的值为________,中缀算式(3+4X)-2Y/3对应的后缀算式为_____

解:

9 2 3 + - 10 2 / -9 5 - 10 2 / -4 10 2 / -4 5 --1

构建二叉树:这里写图片描述
进行后续遍历,所得即为后缀算式。

注意:遇到操作符,选取操作数的时候,从左到右(或是从栈底到栈顶的方向来选),运算有顺序。

答案:-13 4 X * + 2 Y * 3 / -


                                   2017 11 25 华丽的分割线

下面叙述正确的是()。
A. 二叉树是特殊的树
B. 二叉树等价于度为2的树
C. 完全二叉树必为满二叉树
D. 二叉树的左右子树有次序之分

解:

(Tree)是nn0个节点的有限集。

二叉树(Binary Tree)是另一种树形结构,它的特点是每个节点至多只有二棵子树(即二叉树中不存在存在度大于2的节点),并且,二叉树的子树有左右之分,其次序不能任意颠倒。

                                                       ————摘自《数据结构(C语言版)》严蔚敏 主编

由上述定义知,二叉树 是两种不同的数据结构, 排除A,B。
满二叉树必为完全二叉树,排除C。

答案:D

*由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为( )。
A. 24
B. 48
C. 72
D. 53

解:这里写图片描述
顺便展示一下哈夫曼树的构建过程。

概念:
从树中一个节点到另一个节点之间的分支构成这两个节点之间的路径,路径上的分支数目称作路径长度

树的路径长度是从树根到每一个节点的路径长度之和。

设有n个权值,{w1,w2,...,wn},构造一课有 n 个叶子节点的二叉树,每个叶子节点带权为wi,每个叶子节点的树的路径长度为 li树的带权路径长度为树中所有带权路径长度之和,通常记作 WPL=k=1nwili
其中,树的带权路径长度最小的二叉树称作最优二叉树或哈夫曼树

                                                       ————摘自《数据结构(C语言版)》严蔚敏 主编

WPL=(2+3)3+(5+6+8)2=53

注意:不是权值 乘以 层数,而是乘以树的路径长度

答案:D

任何一棵二叉树的叶子结点在先序、中序和后序遍历序列中的相对次序()。
A. 不发生改变
B. 发生改变
C. 不能确定
D. 以上都不对

解:题意理解错误,本题是指叶子节点之间的相对次序,只说叶子节点,且不是绝对位置,三种遍历方法都是先左后右,所以,认真理解题意啊笨蛋。

答案:A

*假设一棵二叉树的先序序列为EBADCFHGIKJ,中序序列为ABCDEFGHIJK,请画出该二叉树并写出该二叉树的后序遍历序列。

解:
这里写图片描述
这里写图片描述
通过先序序列找双亲节点,通过中序序列将左右子树区分开,一步一步慢慢来。

答案:二叉树看解析,后序序列:A C D B G J K I H F E

*下列关于AOE网的叙述中,不正确的是()。
A.关键活动不按期完成就会影响整个工程的完成时间
B.任何一个关键活动提前完成,那么整个工程将会提前完成
C.所有的关键活动提前完成,那么整个工程将会提前完成
D.某些关键活动提前完成,那么整个工程将会提前完成

解:
这里写图片描述
分号左边为最早发生时间,右边为最迟发生时间。

一个关键活动提前完成,只能让这条关键路径变成非关键路径。

当关键路径不止一条的时候,单单提高一条关键路径上关键活动的速度,是不能缩短整个工程工期的。

所以,并不是网中任何一个关键活动提前完成,整个工程都能提前完成。但如果网中任何一个关键活动延期完成,整个工程一定延期。

关键是 D 选项,这个理解起来比较奇怪,我第一次没怎么理解,出题人的意思是,“存在某些关键活动,若它们被完成,那么整个工程将会提前完成”,我理解成了,“任意一些关键活动,若它们被完成,那么整个工程将会提前完成。”,慢慢感觉吧,我总觉得这句话说的有歧义,不严谨。但 B 一定错就是了。

答案:B


                                   2017 11 26 华丽的分割线

*数据结构中其逻辑结构有 四种。

解:记忆型题目。

答案:集合,线性结构,树形结构,图状结构或网状结构

*AOV网中,结点表示,边表示。AOE网中,结点表示 ,边表示
解:记忆型题目。

答案:活动,活动间的关系,事件,活动

数组A[5][6]的每个元素占五个字节,将其按行优先次序存储在起始地址为1000的内存单元中,则元素A[4][5]的地址是

解:幼儿难度计算题,但我还是做错了。

就是设数组为F[m][n]待求地址为 F[i][j],首地址为 F, 数组中每一个元素所占字节为 B 所以:

F[i][j]=F+(i×n+j)×B

为什么是i×n呢?因为数组是从0开始数的啊笨蛋,你怎么就忘了呢?????
这里写图片描述
答案:1145

阅读全文
1 0