(完整word版)数据结构课后习题及答案

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

填空题(10 * 1 '= 10')

一、概念题

22当对一个线性表经常进行的是插入和删除操作时,采用链式存储结构为宜。

23当对一个线性表经常进行的是存取操作,而很少进行插入和删除操作时,最好采用顺序存储结构。

2.6. 带头结点的单链表L中只有一个元素结点的条件是L->Next->Next==Null。

36循环队列的引入,目的是为了克服假溢出。

4.2. 长度为0的字符串称为空串。

4.5. 组成串的数据元素只能是字符。

4.8. 设T和P是两个给定的串,在T中寻找等于P的子串的过程称为模式匹配,又称P为模式。

7.2. 为了实现图的广度优先搜索,除一个标志数组标志已访问的图的结点外,还需要队列存放被访问的结点实现遍历。

5.7. 广义表的深度是广义表中括号的重数

7.8. 有向图G可拓扑排序的判别条件是有无回路。

7.9. 若要求一个稠密图的最小生成树,最好用Prim算法求解。

8.8. 直接定址法法构造的哈希函数肯定不会发生冲突。

9.2. 排序算法所花费的时间,通常用在数据的比较和交换两大操作。

1.1. 通常从正确性、可读性、健壮性、时空效率等几个方面评价算法的(包括程序)的质量。

1.2. 对于给定的n元素,可以构造出的逻辑结构有集合关系、线性关系树形关系、图状关系四种。

1.3. 存储结构主要有顺序存储、链式存储、索引存储、散列存储四种。

1.4. 抽象数据类型的定义仅取决于它的一组逻辑特性,而与存储结构无关,即不论其内部结构如何变化,只要它的数学特性不

变,都不影响其外部使用。

1.5. 一个算法具有五大特性:有穷性、确定性、可行性,有零个或多个输入、有一个或多个输入。

2.8. 在双向链表结构中,若要求在p指针所指的结点之前插入指针为s所指的结点,则需执行下列语句:

s_>prior= p_>prior; s->next= p; p_>prior- next= s; p_>prior= s;。

2.9. 在单链表中设置头结点的作用是不管单链表是否为空表,头结点的指针均不空,并使得对单链表的操作

(如插入和删除)在各种情况下统一。

3.1. 队列是限制在表的一端进行插入和在另一端进行删除的线性表,其运算遵循先进先出原则。

3.2 .栈是限定尽在表位进行插入或删除操作的线性表。

3.5. 在链式队列中,判定只有一个结点的条件是(Q->rear==Q->fro nt)&&(Q->rear!=NULL) 。

3.7. 已知链队列的头尾指针分别是f和r,则将x入队的操作序列是node *p=(node *)malloc(node); p->next=x;] p_>next=NULL; if(r) {r->next=p; r=p;} else {r=p; f=p;}。

3.8. 循环队列的满与空的条件是(rear+1)%MAXSIZE==fornt 和(fron t=-1 &&rear+ ^=MAXSIZE) 。

4.3. 串是一种特殊的线性表,其特殊性表现在数据元素都是由字符组成。

4.7. 字符串存储密度是串值所占存储位和实际分配位的比值,在字符串的链式存储结构中其结点大小是可变的。

5.3. 所谓稀疏矩阵指的是矩阵中非零元素远远小于元素总数,则称该矩阵为矩阵中非零元素远远小于元素总数,则称该矩阵为稀

疏矩阵。

5.4. —维数组的逻辑结构是线性结构,存储结构是顺序存储结构;对二维或多维数组,分别按行优先和列优先两种・不同的存储

方式。

7.4. 在有向图的邻接矩阵表示中,计算第i个顶点入度的方法是求邻接矩阵中第・i列非10元素的个数。

7.10. AOV网中,结点表示活动,边表示活动之间的优先关系,AOE网中,结点表示事件,边表示活动。

9.1. 按排序过程中依据不同原则对内部排序方法进行分类,主要有选择排序、交换排序、插入排序归并排序等4类。

9.3 .在堆排序、快速排序和归并排序中若只从排序结果的稳定性考虑,则应选择归并排序方法;若只从平均情况下

排序最快考虑,则应选择快速排序方法;若只从最坏情况下排序最快且要节省类存考虑,则应选择堆排序方法。

9.4. 直接插入排序用监视哨的作用是存当前要的插入记录,可又省去查找插入位置时对是否出界的判断。

9.6. 设表中元素的初始状态是按键值递增的,则直接插入排序最省时间,快速排序最费时间。

4.9. 下列程序判断字符串s是否对称,对称则返回1,否则返回0;如?(abba”返回1, ? (”abab”)返回0.

Int f (char*s)

{

Int i=0,j=0;

while(s[j]) j++;

/* 求串长 */

for(j--;i=j); }

、结论题

2.7.

在具有n 个结点有序单链表中插入一个新结点并仍然有序的时间复杂度为

0(n)。

2.10•对于一个具有n 个结点的单链表,在已知的结点 *p 后插入一个新结点的时间复杂度为 0(1),在给定值为x 的结

点后插入一个新结点的时间复杂度为

O( n)

7.5. 若n 个顶点的连通图是一个环,则它有 n 棵生成树。 7.6.

n 个顶点的连通图用连接矩阵表示时,该矩阵至少有 2(n-1)个非

零元素。

7.7. 有n 个顶点的有向图,至少需要 n 条弧才能保证是连通的。

9.7. 归并排序除了在递归是现实所用的 log z n 个栈空间外,还用

n 个辅助空间。

2.1.

对于采用顺序存储结构的线性表,当随机插入一个数据元素时,平均移动表中

n/2元素;删除一个数据元素时,

平均移动表中(n-1)/2元素。

2.4. 在一个长度为n 的顺序存储结构的线性表中,向第

i 个元素(K i w n+1)之前插入一个新元素时,需向后边移动 n-i+1 个元素。

2.5. 从长度为n 的采用顺序存储结构的线性表中删除第 i 个元素(1w i w n ),需向前移动n-1个元素。

3.4. 当两个栈共享一存储区时,存储区用一维数组 stack (1, n )表示,两栈顶指针为

top 【1】与top 【2】,贝U 当栈1

空时。top 【1】为0,栈2空时top 【2】为n+1,栈满的条件是top[1]+1==top[2]。

8.1.

顺序查找n 个元素的顺序表,若查找成功,则比较关键字的次数最多为

n 次;当使用监视哨时,若查找失败,

贝吐匕较关键字的次数为 n+1 o

6.5. 设一颗完全二叉树叶子结点数为 k ,最后一层结点数为偶数时,则该二叉树的高度为 |log2 2k 1 +1,最后一层结点

数为奇数时,则该二叉树的高度为 |log2 2k +1o

9.8.

对n 个记录建立一个堆的方法是:首先将要排序的所有记录分到一棵二叉树的各个结点中,然后从

i= n/2

的结点

ki ,逐渐把以kn/2,kn/2-1kn/2-2,……为根的子树排成堆,直到以 k1根的树排成堆,就完成了初次建堆的过程。 三、计算题

4.4.Strlndex( MY STUDEN ”STU')=4。

5.5. 求下列广义表的运算结果: Get Tail{GetHead{{{a,b},{c,d}}}}= ( b )。

6.

7. 已知二叉树先序为ABDEGCF ,中序为DBGEACF ,则后序一定是 DGEBFCA 。

5.8. 广义表{a,{a,b},d,e,{{i,j},k}}的长度是 5,深度是 3。

6.9. 具有10个叶子的哈夫曼树,其最大高度为 9,最小高度为5。

6.1. 已知二叉树有50个叶子结点,则该二叉树的总结点数至少是

99。

6.10.

设F 是一个森林,B 是由F 转换得到的二叉树,F 中有n 个非终端节点,则 B 中右指针域为空的结点有|n+1个。

3.10. 表达式 23+ ((12*13-2 ) /4+34*5/7) +108/9 的后缀表达式是 23 12 3*2-4/34 5*7/++108 9/+

3.3. 用s 表示入栈操作。X 表示出栈操作,若元素入栈的顺序为

1,2,3,4,为了得到1,3,4,2出栈顺序,相应的s 和x 的

5.6. 广义表 A={{{a,b},{c,d,e}}},取出 A 中的原子 e 的操作是:GetTail(GetTail(GetT ail(GetHead(A))))。 9.10. 一组记录的键值为{

12,38,35,25,74,50,63,90 },按二路归并排序方法对该序列进行一趟归并后的结果是

4.1.设正文产长度为n ,模式串长度为m ,则简单模式匹配算法的时间复杂度为 9.

5.对n 个记录进行快速排序时,递归调用而是用的栈所能达到的最大深度为 O(m* n)。

O(n),平均深度为 O(log 2n)。

7.3.具有n 个结点e 条边的有向图和无向图用邻接表表示,则邻接表的边结点个数分别为 e 和2e 条。

相关文档
最新文档