数据结构练习题课

合集下载

数据结构习题课1

数据结构习题课1
IF i j 1 THEN
(IF A[i] A[j] THEN(fmax A[j]. fmin A[i]).
ELSE (fmax A[i]. fmin A[j]). RETURN). BS2. [取中值] mid (ij)/2 BS3. [递归调用]
BS (A, i, mid. gmax, gmin). BS (A, mid1, j. hmax,
IF (n≤1) THEN (flag←false. RETURN.) S2[初始化]
i←2. flag←true. S3[求余判断]
WHILE (i ≤ n div 2 ) DO (IF (n MOD i)=0 THEN (flag←false. RETURN.) i←i+1.) ▌
参考答案3
算法 S (n. flag) /*判断整数n是否为素数,将结果保存到变量flag*/ S1[n≤1?]
for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) ;
int t=1; while(t<n) t*=2;
int t=2; while(t<n) t*=t;
作业1-5
题目描述
试用ADL语言编写一个算法,判断任一整数 n 是否为素数
for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) t=a[i][j],a[i][j]=a[j][i],a[j][i]=t;
for(int i=1;i<=n;i++) for(int j=i+1;j<=n;j++) a[j][i]=[i][j];

数据结构课后习题及解析第一章

数据结构课后习题及解析第一章

数据结构课后习题及解析第一章第一章习题一、问答题1.什么是数据结构?2.叙述四类基本数据结构的名称与含义。

3.叙述算法的定义与特性。

4.叙述算法的时间复杂度。

5.叙述数据类型的概念。

6.叙述线性结构与非线性结构的差别。

7.叙述面向对象程序设计语言的特点。

8.在面向对象程序设计中,类的作用是什么?9.叙述参数传递的主要方式及特点。

10.叙述抽象数据类型的概念。

二、判断题(在各题后填写“√”或“某”)1.线性结构只能用顺序结构来存放,非线性结构只能用非顺序结构来存放。

()2.算法就是程序。

()3.在高级语言(如C或PASCAL)中,指针类型是原子类型。

()三、计算下列程序段中某=某+1的语句频度for(i=1;i<=n;i++)for(j=1;j<=i;j++)for(k=1;k<=j;k++)某=某+1;四、试编写算法,求一元多项式Pn(某)=a+a某+a2某2+a3某3+…an某n的值Pn(某),并确定算法中的每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能小,规定算法中不能使用求幂函数。

注意:本题中的输入ai(i=0,1,…,n),某和n,输出为Pn(某)。

通常算法的输入和输出可采用下列两种方式之一:(1)通过参数表中的参数显式传递。

(2)通过全局变量隐式传递。

试讨论这两种方法的优缺点,并在本题算法中以你认为较好的一种方式实现输入和输出。

实习题设计实现抽象数据类型“有理数”。

基本操作包括有理数的加法、减法、乘法、除法,以及求有理数的分子、分母。

第一章答案1.3计算下列程序中某=某+1的语句频度for(i=1;i<=n;i++)for(j=1;j<=i;j++)for(k=1;k<=j;k++)某=某+1;【解答】某=某+1的语句频度为:T(n)=1+(1+2)+(1+2+3)+……+(1+2+……+n)=n(n+1)(n+2)/61.4试编写算法,求pn(某)=a0+a1某+a2某2+…….+an某n的值pn(某0),并确定算法中每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能小,规定算法中不能使用求幂函数。

数据结构第一章习题课

数据结构第一章习题课

1. 数据结构是一门研究非数值计算的程序设计问题中计算机的 操作对象 以及它们之间的 关系 和运算等的学科。

2. 数据结构被形式地定义为(D, R ),其中D 是 数据元素 的有限集合,R 是D 上的 关系 有限集合。

3. 线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。

4. 在线性结构中,第一个结点 没有 前驱结点,其余每个结点有且只有 1个前驱结点;最后一个结点 没有 后续结点,其余每个结点有且只有1个后续结点。

5. 在树形结构中,树根结点没有 前驱 结点,其余每个结点有且只有 1 个前驱结点;叶子结点没有 后续 结点,其余每个结点的后续结点数可以任意多个 。

6. 在图形结构中,每个结点的前驱结点数和后续结点数可以 任意多个 。

7. 一个算法的效率可分为 时间 效率和 空间 效率。

8. 数据结构中,与所使用的计算机无关的是数据的 结构;A) 存储 B) 物理 C) 逻辑 D) 物理和存储9. 算法分析的目的是:A) 找出数据结构的合理性 B) 研究算法中的输入和输出的关系C) 分析算法的效率以求改进 D) 分析算法的易懂性和文档性10. 算法分析的两个主要方面是:A) 空间复杂性和时间复杂性 B) 正确性和简明性C) 可读性和文档性 D) 数据复杂性和程序复杂性11. 计算机算法指的是:A) 计算方法 B) 排序方法 C) 解决问题的有限运算序列 D) 调度方法12. 计算机算法必须具备输入、输出和 等5个特性。

A) 可行性、可移植性和可扩充性 B) 可行性、确定性和有穷性C) 确定性、有穷性和稳定性 D) 易读性、稳定性和安全性13.【严题集1.2②】数据结构和数据类型两个概念之间有区别吗? 答:简单地说,数据结构定义了一组按某些关系结合在一起的数组元素。

数据类型不仅定义了一组带结构的数据元素,而且还在其上定义了一组操作。

14.【严题集1.8④】分析下面各程序段的时间复杂度(每小题5分,共20分) 2. s=0; for (i=0; i<n; i++)for(j=0; j<n; j++) s+=B[i][j]; sum=s; 答:O (n 2) 1. for (i=0; i<n; i++) for (j=0; j<m; j++) A[i][j]=0;答:O (m*n )15.设有数据逻辑结构S=(D,R ),试按各小题所给条件画出这些逻辑结构的图示,并确定相对于关系R ,哪些结点是开始结点,哪些结点是终端结点?(每小题5分,共15分)a. 【严蔚敏习题集P7 1.3②】D={d1,d2,d3,d4} R={(d1,d2),(d2,d3),(d3,d4) }答: d1→d2→d3→d4 d1—无直接前驱,是首结点 d4—无直接后继是尾结点b. D={d1,d2,…,d9}R={(d1,d2),(d1,d3),(d3,d4),(d3,d6),(d6,d8),(d4,d5), (d6,d7),(d8,d9) }答: 此图为树形结构 d1—无直接前驱,是根结点 d2,d5,d7,d9—无直接后继是叶子结点c. D={d1,d2,…,d9}R={(d1,d3),(d1,d8),(d2,d3),(d2,d4),(d2,d5),(d3,d9), (d5,d6),(d8,d9),(d9,d7), (d4,d7), (d4,d6)}答: 此图为图形结构 d1,d2—无直接前驱,是开始结点 d6,d7—无直接后继是终端结点3. x=0; for(i=1; i<n; i++) for (j=1; j<=n-i; j++) x++; 解:因为x++共执行了n-1+n-2+……+1= n(n-1)/2,所以执行时间为O (n 2)4. i=1; while(i<=n) i=i*3; 答:O (log 3n )。

数据结构教材课后习题及参考答案习题 (10)[3页]

数据结构教材课后习题及参考答案习题 (10)[3页]

习题6一.填空题1.树中除根结点外,其他结点有且只有个直接前驱结点,但可以有个直接后继结点。

2.树中结点的度,是指结点拥有的个数;一棵具有n个结点的树,该树中所有结点的度数之和为。

3.深度为h的完全二叉树至少有个结点,至多有个结点,若按层序从1开始编号,则编号最小的叶子结点的编号是。

5.将一棵完全二叉树按层序从1进行编号,对编号为i的结点,如果有左孩子,则左孩子的编号应该是;如果有右孩子,则右孩子的编号应该是。

6.一棵完全二叉树有1001个结点,其深度是,叶子结点个数是。

78.树的先根遍历序列与其对应二叉树的遍历序列相同,树的后根遍历序列与其对应二叉树的遍历序列相同。

9.若二叉树共有n个结点,采用线索链表存储其线索二叉树,那么在所有存储结点里,一共有个指针域,其中有个指针是指向其孩子结点的,个指针是指向其前驱后继结点的。

指向前驱后继结点的指针称为。

10.哈夫曼树又称。

它是n个带权叶子结点构成的所有二叉树中,带权路径长度的二叉树。

11.哈夫曼树中,权值较大的叶结点一定离根结点。

由n个带权值的叶结点生成的哈夫曼树中共有个结点,其中有个分支结点。

12.哈夫曼树中不存在度为的结点。

二.选择题1.有关二叉树下列说法正确的是()A.二叉树的度为2 B.一棵二叉树的度可以小于2C.二叉树中至少有一个结点的度为2 D.二叉树中任何一个结点的度都为2 2.二叉树的第i层上最多含有结点数为()A.2i B.2i-1-1 C.2i-1D.2i-13.一棵具有1025个结点的二叉树的高度为( )。

A.11 B.10 C.11至1025之间D.10至1024之间4.一棵高度为5的二叉树,其结点总数为()。

A.6~17 B.5~16 C.6~32 D.5~315.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点的个数是( )。

A.9 B.11 C.15 D.不能确定6.一棵完全二叉树具有600个结点,则它有( ) 个度为1的结点。

数据结构第九章习题课

数据结构第九章习题课

1.用二分(对半)查找表的元素的速度比用顺序法( )A.必然快 B. 必然慢 C. 相等 D. 不能确定2.具有12个关键字的有序表,折半查找的平均查找长度()A. 3.1B. 4C. 2.5D. 53.如果要求一个线性表既能较快的查找,又能适应动态变化的要求,则可采用( )查找法。

A. 分块查找B. 顺序查找C. 折半查找D. 基于属性4.分别以下列序列构造二叉排序树,与用其它三个序列所构造的结果不同的是( )A.(100,80,90,60,120,110,130) B.(100,120,110,130,80,60,90)C.(100,60,80,90,120,110,130)D. (100,80,60,90,120,130,110)5. 在平衡二叉树中插入一个结点后造成了不平衡,设最低的不平衡结点为A,并已知A的左孩子的平衡因子为0右孩子的平衡因子为1,则应作( ) 型调整以使其平衡。

A. LLB. LRC. RLD. RR7. 下面关于B和B+树的叙述中,不正确的是( )A. B树和B+树都是平衡的多叉树。

B. B树和B+树都可用于文件的索引结构。

C. B树和B+树都能有效地支持顺序检索。

D. B树和B+树都能有效地支持随机检索。

8. m阶B-树是一棵( )A. m叉排序树B. m叉平衡排序树C. m-1叉平衡排序树D. m+1叉平衡排序树9. 设有一组记录的关键字为{19,14,23,1,68,20,84,27,55,11,10,79},用链地址法构造散列表,散列函数为H(key)=key MOD 13,散列地址为1的链中有()个记录。

A.1 B. 2 C. 3 D. 410.下面关于哈希(Hash,杂凑)查找的说法正确的是( )A.哈希函数构造的越复杂越好,因为这样随机性好,冲突小B.除留余数法是所有哈希函数中最好的C.不存在特别好与坏的哈希函数,要视情况而定D.若需在哈希表中删去一个元素,不管用何种方法解决冲突都只要简单的将该元素删去即可11. 若采用链地址法构造散列表,散列函数为H(key)=key MOD 17,则需((1))个链表。

数据结构课后习题及答案

数据结构课后习题及答案

填空题(10 * 1’ = 10’)一、概念题2.2.当对一个线性表经常进行的是插入和删除操作时,采用链式存储结构为宜。

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

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

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

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.在单链表中设置头结点的作用是不管单链表是否为空表,头结点的指针均不空,并使得对单链表的操作(如插入和删除)在各种情况下统一。

数据结构第二章习题课

数据结构第二章习题课

1、试描述头指针、头结点、开始结点的区别、并说明头指针和头结点的作用。

答:开始结点是指链表中的第一个结点,也就是没有直接前趋的那个结点。

链表的头指针是一指向链表开始结点的指针(没有头结点时),单链表由头指针唯一确定,因此单链表可以用头指针的名字来命名。

头结点是我们人为地在链表的开始结点之前附加的一个结点。

有了头结点之后,头指针指向头结点,不论链表否为空,头指针总是非空。

而且头指针的设置使得对链表的第一个位置上的操作与在表其他位置上的操作一致(都是在某一结点之后)。

2、何时选用顺序表、何时选用链表作为线性表的存储结构为宜?答:在实际应用中,应根据具体问题的要求和性质来选择顺序表或链表作为线性表的存储结构,通常有以下几方面的考虑:1) 基于空间的考虑。

当要求存储的线性表长度变化不大,易于事先确定其大小时,为了节约存储空间,宜采用顺序表;反之,当线性表长度变化大,难以估计其存储规模时,采用动态链表作为存储结构为好。

2) 基于时间的考虑。

若线性表的操作主要是进行查找,很少做插入和删除操作时,采用顺序表做存储结构为宜;反之,若需要对线性表进行频繁地插入或删除等操作时,宜采用链表做存储结构。

并且,若链表的插入和删除主要发生在表的首尾两端,则采用尾指针表示的单循环链表为宜。

3、在顺序表中插入和删除一个结点需平均移动多少个结点?具体的移动次数取决于哪两个因素?答:在等概率情况下,顺序表中插入一个结点需平均移动n/2个结点,删除一个结点需平均移动(n-1)/2个结点。

具体的移动次数取决于顺序表的长度n以及需插入或删除的位置i。

i 越接近n则所需移动的结点数越少。

4、为什么在单循环链表中设置尾指针比设置头指针更好?答:尾指针是指向终端结点的指针,用它来表示单循环链表可以使得查找链表的开始结点和终端结点都很方便,设一带头结点的单循环链表,其尾指针为rear,则开始结点和终端结点的位置分别是rear->next->next 和rear, 查找时间都是O(1)。

数据结构习题课(2012)

数据结构习题课(2012)

数据结构习题课(2012)复习重点1.数据结构的概念,逻辑结构、物理结构的概念及各⾃包含的内容2.算法的特性、设计要求,如何度量算法的时间效率。

3.线性表的顺序/链式存储结构的特点,插⼊、删除算法。

4.栈和队列的逻辑特性,顺序栈的⼊栈/出栈、循环队列的⼊队/出队算法。

5.以三元组顺序表存放的稀疏矩阵的转置算法。

6.⼆叉树的性质及其四种遍历算法。

7.森林与⼆叉树的相互转换。

8.WPL、前缀编码的概念,哈夫曼树的构造算法。

9.图的相关概念,邻接矩阵及邻接表的存储结构。

10.图的深度优先/⼴度优先遍历算法。

11.最⼩⽣成树的两种算法。

12.拓扑排序的意义和算法。

13.最短路径算法。

14.顺序表、有序表的查找算法。

15.⼆叉排序树的性质、插⼊/删除算法、平衡⼆叉树的性质、插⼊算法。

16.哈希表的相关概念,常⽤的冲突处理⽅法。

17.直接插⼊排序、希尔排序、快速排序、堆排序、归并排序的算法。

注意:1.上述每个知识点可能会以任何题型出现,复习的时候别把它们当做“简答题”来复习。

2.红⾊(下划线)标识的知识点或算法,只要求对给出的初始数据,能画出结果则可。

其他的算法则可能会出现在“算法题”中。

⾃测题第1章绪论⼀、判断1.顺序存储⽅式只能⽤于存储线性结构。

(错)2.顺序查找法适⽤于存储结构为顺序或链式存储的线性表。

(对)⼆、选择1.计算机算法必须具备输⼊、输出、( B )等5个特性。

A.可⾏性、可移植性和可扩展性B.可⾏性、确定性和有穷性C.确定性、有穷性和稳定性D.易读性、安全性和稳定性2.算法在发⽣⾮法操作时可以作出处理的特性称为(C )。

A.正确性B.易读性C.健壮性D.可靠性3.数据结构是⼀门研究⾮数值计算的程序设计问题中计算机的(A )以及它们之间的( B )和运算的学科。

A.操作对象B.计算⽅法C.逻辑存储D.数据映像A.结构B.关系C.运算D.算法4.在数据结构中,逻辑上数据结构可分为:(B )A.动态结构和静态结构B.线性结构和⾮线性结构C.紧凑结构和⾮紧凑结构D.内部结构和外部结构5.数据结构主要研究数据的(D )A.逻辑结构B.存储结构C.逻辑结构和存储结构D.逻辑结构和存储结构及其运算的实现6.为了描述n个⼈之间的同学关系,可⽤(C )结构表⽰A.线性表B.树C.图D.队列7.下⾯的程序段违反了算法的(A )原则void sam(){ int n=2;while (!odd(n)) n+=2;printf(n);}A.有穷性B.确定性C.可⾏性D.健壮性三、问答1.什么是逻辑结构和物理结构?各⾃包含哪⼏种?2.线性结构和树型结构的特点分别是什么?3.简述顺序存储结构与链式存储结构在表⽰数据元素之间关系上的只要区别。

数据结构课程习题集第1页共25页

数据结构课程习题集第1页共25页

《数据结构》课程习题集第 1 页(共 25 页)一、. 选择题. 1. 算法的计算量的大小称为计算的()。

A.效率 B. 复杂性 C. 现实性 D. 难度.2. 算法的时间复杂度取决于().A.问题的规模 B. 待处理数据的初态 C. A和B D. 难确定.3. 下面关于算法说法错误的是()A.算法最终必须由计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的.4.从逻辑上可以把数据结构分为()两大类。

A.动态结构、静态结构 B.顺序结构、链式结构C.线性结构、非线性结构 D.初等结构、构造型结构.5.以下数据结构中,哪一个是线性结构()?A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串.6.下述哪一条是顺序存储结构的优点?()A.存储密度大 B.插入运算方便C.删除运算方便 D.可方便地用于各种逻辑结构的存储表示.7.下面关于线性表的叙述中,错误的是哪一个?()A.线性表采用顺序存储,必须占用一片连续的存储单元。

B.线性表采用顺序存储,便于进行插入和删除操作。

C.线性表采用链接存储,不必占用一片连续的存储单元。

D.线性表采用链接存储,便于插入和删除操作。

.8.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。

A.顺序表 B.双链表 C.带头结点的双循环链表 D.单循环链表.9.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( )最节省时间。

A. 单链表B.单循环链表C. 带尾指针的单循环链表D.带头结点的双循环链表.10. 链表不具有的特点是().A.插入、删除不需要移动元素 B.可随机访问任一元素C.不必事先估计存储空间 D.所需空间与线性长度成正比.11. 设一个栈的输入序列是 1,2,3,4,5,则下列序列中,是栈的合法输出序列的是()。

A. 5 1 2 3 4B. 4 5 1 3 2C. 4 3 1 2 5D. 3 2 1 5 4.12. 某堆栈的输入序列为a, b,c ,d,下面的四个序列中,不可能是它的输出序列的是()。

数据结构C++陈慧南习题课1

数据结构C++陈慧南习题课1

// O(1)
习题三(第50页) 习题三( 50页
五个元素依次进栈(进栈后可立即出栈) 3 .1 设A、B、C、D、E五个元素依次进栈(进栈后可立即出栈),问 能否得到下列序列。若能得到,则给出相应的push pop序列 push和 序列; 能否得到下列序列。若能得到,则给出相应的push和pop序列;若不 则说明理由。 能,则说明理由。 1) A,B,C,D,E 2) A,C,E,B,D 3) C,A,B,D,E 4) E,D,C,B,A 不能。 中的E 而言, 最先出栈则表明, 答:2)和3)不能。对2)中的E,B,D而言,E最先出栈则表明,此 均在栈中,由于, 先于D进栈,所以应有D先出栈。同理3 时 B 和 D 均在栈中 , 由于 , B 先于 D 进栈 , 所以应有 D 先出栈 。同理 3 ) 也不能。 也不能。 (1)能。 push,pop,push,pop,push,pop,push,pop,push,pop (4)能。 push,push,push,push,push,pop,pop,pop,pop,pop
设计共享栈。 3.2 设计共享栈。
0
n-1
↑ bottom1 bottom1
↑ top1 top1
↑ top2 top2
↑ bottom2 bot个足够大的栈空间 。 该空间的两端分别设为两个栈的 栈底, bottom1 bottom2 指示, 让两个栈的栈顶, top1 栈底 , 用 bottom1 和 bottom2 指示 , 让两个栈的栈顶 , 用 top1 和 top2 指示,都向中间伸展,直到两个栈的栈顶相遇, top2 指示 , 都向中间伸展 , 直到两个栈的栈顶相遇 , 才会发生 溢出。 溢出。 栈空,两栈均空:top1=0且 top2=n-1 栈空,两栈均空:top1 top2=n栈满:top1=top2 栈满:top1=top2-1

数据结构第七章习题课

数据结构第七章习题课

1、判定一个有向图是否存在回路,除了利用拓扑排序方法外,还可以利用( )A 、求关键路径的方法B 、求最短路径的Dijkstra 方法C 、宽度优先遍历算法D 、深度优先遍历算法 2.图中有关路径的定义是( )oA. 由顶点和相邻顶点序偶构成的边所形成的序列B. 由不同顶点所形成的序列C. 由不同边所形成的序列D.上述定义都不是3. 一个n 个顶点的连通无向图,其边的个数至少为()4. 当一个有N 个顶点的无向图用邻接矩阵 A 表示时,顶点Vi 的度是()5. 下列说法不正确的是( )oA. 图的遍历是从给定的源点出发每一个顶点仅被访问一次B. 遍历的基本算法有两种:深度遍历和广度遍历C. 图的深度遍历不适用于有向图D. 图的深度遍历是一个递归过程6. 无向图 G=(V,E),其中:V={a,b,c,d,e,f},E={(a,b),(a,e),(a,c),(b,e),(c,f),(f,d),(e,d)},对该图进行深度优先遍历,得到的顶点序 列正确的是( )oA . a,b,e,c,d,fB . a,c,f,e,b,dC . a,e,b,c,f,dD . a,e,d,f,c,b 7. 设图如右所示,在下面的5个序列中,符合深度优先遍历的序列有多少?(a e d f cb a e f dc b C . 3个&在图采用邻接表存储时,求最小生成树的A. O (n ) B O (n+e ) 9.已知有向图 G=(V,E),其中 V={V 1,V 2,V 3,V 4,V 5,V 6,V 7},E={VV 1,V 2>,VV 1,V 3>,VV 1,V 4>,VV 2,V 5>,VV 3,V 5>,VV 3,V 6>,VV 4,V 6>,VV 5,V 7>,VV 6,V 7>},A . n-1B . nC . n+1D . nlogn ;nZ A[i, j]A. i 4nZ A 【,j]B. 订nZ A[j,i]C . VnnS A[i, j]迟 Aj,i]D. v + vPrim 算法的时间复杂度为(23C. O (n )D. O (n ) )oa eb d f cB . 4个G 的拓扑序列是()。

习题课 数据结构(C语言版)

习题课   数据结构(C语言版)

习题课1. 设有数据结构(D,R),其中D={d1,d2,d3,d4},R={r},r={(d1,d2),(d2,d3),(d3,d4)}。

试按图论中图的画法惯例画出其逻辑结构图。

2. 假设n为2的乘幂,并且n>2,求下列算法的时间复杂度及变量count的值(以n的函数形式表示)。

int Time(int n){count=0;x=2;while(x<n/2){x*=2;count++;}return(count);}//time3. 简述以下算法的功能。

(1) Status A(LinkedList L) { //L是无表头结点的单链表if (L&&L->next){Q=L;L=L->next;P=L;while (P->next)P=P->next;P->next =Q; Q->next=NULL;}return OK;}//A(2) void BB(LNode *s,LNode *q){p=s;while(p->next!=q)p=p->next;p->next=s;}//BBvoid AA(LNode *pa,LNode *pb){//pa和pb分别是指向单循环链表中的两个结点BB(pa,pb);BB(pb,pa);}//AA4. 指出以下算法中的错误和低效(即费时)之处,并将它改写成一个既正确又高效的算法。

Status DeleteK(SqList&a,int i,int k){//本过程从顺序存储结构的线性表a中删除第i个元素起的k个元素if (i<1||k<0||i+k>a.length)return INFEASIBLE; //参数不合法else {for (count = 1;count <k;count++){//删除一个元素for (j = a.length;j>=i+1;j--)a.elem[j-1]=a.elem[j];a.length--;}return OK;}//DeleteK5. 已知指针la和lb分别指向两个无头结点单链表中的首元结点。

数据结构课后习题及答案

数据结构课后习题及答案

填空题(10 * 1’ = 10’)一、概念题2.2.当对一个线性表经常进行的是插入和删除操作时,采用链式存储结构为宜。

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

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

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

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.在单链表中设置头结点的作用是不管单链表是否为空表,头结点的指针均不空,并使得对单链表的操作(如插入和删除)在各种情况下统一。

严蔚敏数据结构课后习题及答案解析

严蔚敏数据结构课后习题及答案解析

严蔚敏数据结构课后习题及答案解析第一章绪论一、选择题1.组成数据的基本单位是()(A)数据项(B)数据类型(C)数据元素(D)数据变量2.数据结构是研究数据的()以及它们之间的相互关系。

(A)理想结构,物理结构(B)理想结构,抽象结构(C)物理结构,逻辑结构(D)抽象结构,逻辑结构3.在数据结构中,从逻辑上可以把数据结构分成()(A)动态结构和静态结构(B)紧凑结构和非紧凑结构(C)线性结构和非线性结构(D)内部结构和外部结构4.数据结构是一门研究非数值计算的程序设计问题中计算机的(①)以及它们之间的(②)和运算等的学科。

①(A)数据元素(B)计算方法(C)逻辑存储(D)数据映像②(A)结构(B)关系(C)运算(D)算法5.算法分析的目的是()。

(A)找出数据结构的合理性(B)研究算法中的输入和输出的关系(C)分析算法的效率以求改进(D)分析算法的易懂性和文档性6.计算机算法指的是(①),它必须具备输入、输出和(②)等5个特性。

①(A)计算方法(B)排序方法(C)解决问题的有限运算序列(D)调度方法②(A)可执行性、可移植性和可扩充性(B)可行性、确定性和有穷性(C)确定性、有穷性和稳定性(D)易读性、稳定性和安全性二、判断题1.数据的机内表示称为数据的存储结构。

()2.算法就是程序。

()3.数据元素是数据的最小单位。

()4.算法的五个特性为:有穷性、输入、输出、完成性和确定性。

()5.算法的时间复杂度取决于问题的规模和待处理数据的初态。

()三、填空题1.数据逻辑结构包括________、________、_________ 和_________四种类型,其中树形结构和图形结构合称为_____。

2.在线性结构中,第一个结点____前驱结点,其余每个结点有且只有______个前驱结点;最后一个结点______后续结点,其余每个结点有且只有_______个后续结点。

3.在树形结构中,树根结点没有_______结点,其余每个结点有且只有_______个前驱结点;叶子结点没有________结点,其余每个结点的后续结点可以_________。

02331数据结构课后练习题

02331数据结构课后练习题

第1章概论练习题一、单项选择题1.在数据结构中,从逻辑上可以把数据结构分为(B)A.紧凑结构与非紧凑结构B.线性结构与非线性结构C.内部结构与外部结构D.动态结构与静态结构2.若结点得存储地址与其关键字之间存在某种映射关系,则称这种存储结构为(D)A.顺序存储结构B.链式存储结构C.索引存储结构D.散列存储结构3.算法分析得两个主要方面就是(B)A.正确性与简明性B.时间复杂性与空间复杂性C.可读性与可维护性D.数据复杂性与程序复杂性4.线性表采用链式存储结构时,要求内存中可用存储单元地址(A)A.不一定连续得B.部分地址必须就是连续得C.必须就是连续得D.一定就是不连续得5.算法指得就是(C)A.计算机程序B.解决问题得计算方法C.解决问题得有限运算序列D.排序算法二、填空题6.数据结构一般包括逻辑结构、存储结构与数据运算三个方面得内容.7.数据得逻辑结构可分为线性结构、非线性结构两大类.8.数据得存储结构(物理结构)一般可以用顺序存储结构、链式存储结构、索引存储结构及散列存储结构等四种存储方法表示.9.在选用求解一个问题得算法时,除了首先考虑算法就是“正确得”之外,还主要考虑执行算法所需要得时间、执行算法所需要得存储空间及算法应易于理解、易于编程、易于调试等三点。

10.设有一批数据元素,为了最快地存取某元素,宜用顺序结构存储,为了方便得插入一个元素,宜用链式结构存储.三、应用题设n为正整数,利用大“O”记号,写出下列各程序段得时间复杂度.11.for (i = 1; i <= n; i++){y = y + 1;for (j = 1; j <= 2 * n; j++)x = x + 1;}分析:语句“y = y + 1;”执行n次,语句“x = x + 1;”各执行次,故该程序段得时间复杂度为O().12.s = 0;while (n >= (s + 1) * (s + 1))s = s + 1;分析:语句“s = s + 1;”执行次,故该程序段得时间复杂度为O().13.x = 1;sum = 0;for (i = 0; i <= n; i++){x = x * i;sum = sum + x;}分析:语句“x = x * i”与“sum = sum + x;”各执行n次,故该程序段得时间复杂度为O(n).14.for (i = 1; i <= n; i++)if (3 * i <=n)for (j = 3 * i; j <= n; j++){x++;y = 3 * x + 2;}分析:语句“x++”与“y = 3 * x + 2;”各执行次,故该程序段得时间复杂度为O().15.for (i = 1; i <= n; i++)for (j = 1; j <= i; j++){x = x + 1;}分析:语句“x = x + 1;”执行次,故该程序段得时间复杂度为O().16.sum = 0; i = 0;while (i <= 100){sum = sum + i;i++;}分析:语句“sum = sum + i;”与“i++;”各执行100次,故该程序段得时间复杂度为O(1).17.x = 1;s = 0;for (i = 1; i <= n; i++){++x;s += x;}for (j = 1; j <= n; j++)for (k = 1; k <= n; k++){x++;s = s + x;}分析:语句“++x;”执行n次,语句“x++;”与“s = s + x;”各执行次,故该程序段得时间复杂度为O().第2章线性表练习题一、单项选择题1.在长度为n得顺序表得第i个位置上插入一个元素,元素得移动次数为(A)A. B. C. D.2.若一个顺序表中第一个元素得存储地址为1000,每个元素占4个地址单元,那么,第6个元素得存储地址应就是(A)A.1020B.1010C.1016D.10243.带头结点得单链表(以head为头指针)为空得判断条件就是(C)A.head != NULLB.head -> next == headC.head -> next == NULLD.head == NULL4.在单循环链表中,p指向表任一结点,判断表不就是访问结束得条件就是(B)A.p != NULLB.p != headC.p -> next != headD.p -> next != NULL5.在一个单链表中,已知q指向p所指向结点得前趋结点,若在p、q所指结点之间插入一个s所指向得新结点,则执行得操作就是(A)A.q -> next = s; s -> next = pB.p -> next = s; s -> next = qC.s -> next = p -> next; p -> next = sD.p -> next = s -> next; s -> next = p6.在一个单链表中,若删除p指向结点得后继结点,则执行得操作就是(A)A.q = p -> next; p -> next = p -> next -> next; free(q);B.p = p -> next; q = p -> next; p = q -> next; free(q);C.q = p -> next -> next; p = p -> next; free(q);D.p = p -> next -> next; q = p -> next; free(q);二、填空题7.在一个长度为n得顺序表中删除第i个元素,需要向前移动n- i个元素.8.在顺序表中插入或删除一个元素,需要平均移动表长得一半个元素,具体移动得元素个数与插入或删除得位置有关.9.顺序表中逻辑上相邻得元素在物理存储位置上一定相邻,链表结构中逻辑上相邻得元素在物理位置上不一定相邻.10.已知顺序表中一个元素得存储位置就是x,每个元素占c个字节,求其后继元素位置计算公式为x+ c,而已知单链表中某一结点由p指向,求此后继结点存储地址得操作为p -> next.11.在用p指针访问单链表时,判断不就是访问结束得条件就是p != NULL;在访问单循环链表时,判断不就是访问表结束得条件就是p != head.12.已知p指向双向链表得中间某个结点,从给定得操作语句中选择合适得填空.(1)在p结点后插入s结点得语句序列就是I、G、A、D.(2)在p结点前插入s结点得语句序列就是C、N、H、B.(3)删除p结点得直接后继结点得语句序列就是J、Q、E、M.(4)删除p结点得直接前趋结点得语句序列就是K、P、F、M.(5)删除p结点得语句序列就是O、R、L.A.p -> next = sB.p -> prior = sC.s -> next = pD.s -> prior = pE.p -> next = p -> next -> nextF.p -> prior = p -> prior -> priorG.p -> next -> prior = s H.p -> prior -> next = s I.s -> next = p -> nextJ.q = p -> next K.q = p -> prior L.free(p)M.free(q) N.s -> prior = p -> prior O.p -> prior -> next = p -> nextP.p -> prior -> prior -> next = p Q.p -> next -> next -> prior = p R.p -> next -> prior = p -> prior13.下面就是一个在带头结点得单链表head中删除所有数据域值为x得结点得算法,但不完善,请在相应得地方填上适当得语句,使之成为完整得算法.void DeleX(LinkList head, DataType x){LinkNode *p, *q, *s;P = head;q = p -> next;while (q != NULL)if (q -> data == x){s = q;q = q -> next;free(s);p -> next = q;}else{p = q;q = q -> next;}}三、算法设计题14.设有两个顺序表A与B,且都递增有序。

数据结构习题2

数据结构习题2
enqueue(q,’a’); while(!queueempty(q)){
dequeue(q,y);printf(y);//龚注:printf(“%c”,y); } printf(x);//龚注:printf(“%c”,x); } 15. 有如下递归函数:【**】 int dunno(int m){ int value; if(m==0)
【**,★】(a1一定是最后出的)
A、a3,a1,a4,a2
B、 a3,a2,a4,a1
C、 a3,a4,a2,a1
D、 a4,a3,a2,a1
2/10 北京理工大学珠海学院计算机学院 “数据结构”课程组编制 2011-3-1
数据结构课后练习题
第 3 章 栈和队列
图3.1
21. 链栈和顺序栈相比,有一个比较明显的优势是( A )【*】
三、 填空题
1. 1、2、3、4 顺序入栈,则出入栈的序列共有( 14 )种。【***,★】
2. 栈的特点是( 后进先出 ),队列的特点是( 先进先出 )。【*】
3. 线性表、栈、队列都是( 线性 )结构,可以在线性表的( 任意 )位置插入和删除元素;对于栈只能在
( 栈顶 )插入和删除元素;对于队列只能在( 队尾 )插入元素和在( 队首)位置删除元素。【*,
的顺序是( C )。【***,★,考研 2010】
A. bacde
B. dbace
C. dbcae
D. ecbad
25. 已知输入序列为 abcd,经过输出受限的双端队列后能得到的输出序列是( B )。【***,联考】
A. dacb
B. cadb
C. dbca
D. 以上序列都不能得到
26. 栈和队列具有相同的( B )。【**,★,联考】

习题课 数据结构(C语言版)

习题课   数据结构(C语言版)

习题31. 设s='I AM A STUDENT',t='GOOD',q='WORKER'.求:StrLength(s),StrLength(t),SubString(s,8,7),SubString(t,2,1), Index(s,'A'),Index(s,t),Replace(s,'STUDENT',q),Concat(SubString(s,6,2),Concat(t,SubString(s,7,8))).2. 已知下列字符串a='THIS',f='A SAMPLE',c='GOOD',d='NE',b='',s=Concat(a,Concat(SubString(f,2,7),Concat(b,SubString(a,3,2)))), t=Replace(f,SubString(f,3,6),c),u=Concat(SubString(c,3,1),d),g='IS'v=Concat(s,Concat(b,Concat(t,Concat(b,u)))),试问:s,t,v,StrLength(s),Index(v,g),Index(u,g)各是什么?3. 试问执行以下函数会产生怎样的输出结果?void demonstrate( ){StrAssign(s,'THIS IS A BOOK');Replace(s,SubString(s,3,7),)'ESE ARE');StrAssign(t,Concat(s,'S'));StrAssign(u,'XYXYXYXYXYXY');StrAssign(v,SubSting(u,6,3));StrAssign(w,'W');printf('t=',t,'v=',v,'u=',Replace(u,v,w));}//demonstrate4. 假设有二维数组A6×8,每个元素用相邻的6个字节存储,存储器按字节编址.已知A的起始存储位置(基地址)为1000,计算:(1)数组A的体积(即存储量);(2)数组A的最后一个元素a5,7的第一个字节的地址;(3)按行存储时,元素a14的第一个字节的地址;(4)按列存储时,元素a47的第一个字节的地址;5. 假设按低下标优先存储整数数组A9×3×5×8时,第一个元素的字节地址是100,每个整数占四个字节.问下列元素的存储地址是什么.(1) a0000(2) a1111(3) a3125(4) a82476. 按高下标优先存储方式(以最右的下标为主序),顺序列出数组A2×2×3×3中所有元素a ijkl,,为了简化表达,可以只例出(i,j,k,l)的序列.7. 设有上三角矩阵(a ij)n×n,将其上三角元素逐行存于数组B[m]中(m 充分大),使得B[k]=a ij且k=f l (i)+f2 (j)+c .试推导出函数f l, f2和常数c (要求f l和f2中不含常数项).8. 设有三对角矩阵(a ij)n×n,将其三条对角线上的元素逐行存于数组B[3][n]中,使的元素B[u][v]= a ij,试推导出从(i,j)到(u,v)的下标变换公式.9. 求下列广义表操作的结果:(1)GetHead【(p,h,w)】;(2)GetTail【(b,k,p,h)】;(3)GetHead【((a,b),(c,d))】;(4)GetTail【((a,b),(c,d))】;(5)GetHead【GetTail【((a,b),(c,d))】】;(6)GetTail【GetHead【((a,b),(c,d))】】;(7)GetHead【GetTail【GetHead【((a,b),(c,d))】】】;(8)GetTail【GetHead【GetTail【((a,b),(c,d))】】】;注意:【】是函数的符号.10. 利用广义表的GetHead和GetTail 操作写出如上题的函数表达式,把原子banana 分别从下列广义表中分离出来.(1)L1=(apple,pear,banana,orange);(2)L2=((apple,pear),(banana,orange));(3)L3=(((apple),(pear),(banana),(orange)));(4)L4=(apple,(pear),((banana)),(((orange)));(5)L5=((((apple))),((pear)),(banana),orange);(6)L6=((((apple),pear),banana),orange);(7)L7=(apple,(pear,(banana),orange));11. 按教科书5.5节中图5.8所示结点结构,画出下列广义表的存储结构图,并求它的深度.(1) ((( )),a,((b,c),( ),d),(((e))))(2) ((((a),b)),((( ),d),(e,f)))。

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

复习重点1.数据结构的概念,逻辑结构、物理结构的概念及各自包含的内容2.算法的特性、设计要求,如何度量算法的时间效率。

3.线性表的顺序/链式存储结构的特点,插入、删除算法。

4.栈和队列的逻辑特性,顺序栈的入栈/出栈、循环队列的入队/出队算法。

5.以三元组顺序表存放的稀疏矩阵的转置算法。

6.二叉树的性质及其四种遍历算法。

7.森林与二叉树的相互转换。

8.WPL、前缀编码的概念,哈夫曼树的构造算法。

9.图的相关概念,邻接矩阵及邻接表的存储结构。

10.图的深度优先/广度优先遍历算法。

11.最小生成树的两种算法。

12.拓扑排序的意义和算法。

13.最短路径算法。

14.顺序表、有序表的查找算法。

15.二叉排序树的性质、插入/删除算法、平衡二叉树的性质、插入算法。

16.哈希表的相关概念,常用的冲突处理方法。

17.直接插入排序、希尔排序、快速排序、堆排序、归并排序的算法。

注意:1.上述每个知识点可能会以任何题型出现,复习的时候别把它们当做“简答题”来复习。

2.红色(下划线)标识的知识点或算法,只要求对给出的初始数据,能画出结果则可。

其他的算法则可能会出现在“算法题”中。

自测题第1章绪论一、判断1.顺序存储方式只能用于存储线性结构。

(错)2.顺序查找法适用于存储结构为顺序或链式存储的线性表。

(对)二、选择1.计算机算法必须具备输入、输出、( B )等5个特性。

A.可行性、可移植性和可扩展性B.可行性、确定性和有穷性C.确定性、有穷性和稳定性D.易读性、安全性和稳定性2.算法在发生非法操作时可以作出处理的特性称为(C )。

A.正确性B.易读性C.健壮性D.可靠性3.数据结构是一门研究非数值计算的程序设计问题中计算机的(A )以及它们之间的( B )和运算的学科。

A.操作对象B.计算方法C.逻辑存储D.数据映像A.结构B.关系C.运算D.算法4.在数据结构中,逻辑上数据结构可分为:(B )A.动态结构和静态结构B.线性结构和非线性结构C.紧凑结构和非紧凑结构D.内部结构和外部结构5.数据结构主要研究数据的(D )A.逻辑结构B.存储结构C.逻辑结构和存储结构D.逻辑结构和存储结构及其运算的实现6.为了描述n个人之间的同学关系,可用(C )结构表示A.线性表B.树C.图D.队列7.下面的程序段违反了算法的(A )原则void sam(){ int n=2;while (!odd(n)) n+=2;printf(n);}A.有穷性B.确定性C.可行性D.健壮性三、问答1.什么是逻辑结构和物理结构?各自包含哪几种?2.线性结构和树型结构的特点分别是什么?3.简述顺序存储结构与链式存储结构在表示数据元素之间关系上的只要区别。

4.简述算法的5个特性。

第2章线性表一、选择1.线性表是具有n个(C )的有限序列A.表元素B.字符C.数据元素D.数据项E.信息项2.将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是( A )A.nB.2n-1C.2nD.n-13.下述哪一条是顺序存储结构的优点?( A )A.物理上相邻的元素在逻辑上也相邻B.插入运算方便C.删除运算方便D.可方便地用于各种逻辑结构的存储表示4.下面关于线性表的叙述中,错误的是哪一个?(B)A.线性表采用顺序存储,必须占用一段连续的存储单元。

B.线性表采用顺序存储,便于进行插入和删除操作。

C.线性表采用链式存储,不必占用一片连续的存储单元。

D.线性表采用链式存储,便于进行插入和删除操作。

5.指针P所指的元素是双向循环链表L的尾元素的条件是(D )A.P=LB.P=NULLC.P->Link=LD.P->Rlink=L6.在一个单链表中删除P结点的后继结点的语句是( A )A.p->next=p->next->nextB.p=p->next;p->next=p->next->next;C.p->next=p->next;D.p=p->next->next;7.循环链表的主要优点是(D )A.不再需要头指针了B.已知某个结点的位置后,能很容易找到它的直接前驱结点C.在进行删除操作后,能保证链表不断开D.从表中任一结点出发都能遍历整个链表二、问答1.在非空双向循环表中q所指的结点后面插入p所指的结点的语句是?2.循环队列为满和空时的条件。

3.若较频繁地对一个线性表进行插入和删除操作,该线性表宜采用何种存储结构?为什么?4.设单链表中结点的数据域为data,指针域为next,指针p为表中某一结点的地址,请写出在p结点之前插入一个s结点的C语言描述语句。

第3章栈和队列一、选择1.PUSH和POP命令常用于(C )操作A.队列B.数组C.栈D.记录2.判断一个表达式中左右括号是否匹配,采用( D )实现较为方便A.线性表的顺序存储B.队列C.线性表的链式存储D.栈3.用单链表表示的链式队列的对头在链表的( A )位置A.链头B.链尾C.链中4.设栈的输入序列是1,2,3,4,则( D )不可能是其出栈序列A.1,2,4,3B.2,1,3,4C.1,4,3,2D.4,3,1,2E.3,2,1,45.循环队列A[0..m-1]存放其元素,用front和rear分别表示队头和队尾,则循环队列满的条件是( A )A.(Q.rear+1)%m==Q.frontB.Q.rear==Q.front+1C.Q.rear+1==Q.frontD.Q.rear==Q.front6.一般情况下,将递归算法转换成等价的非递归算法应该设置( A )A.栈B.队列C.栈和队列D.数组二、判断1.栈和队列都是限制取点的线性结构。

(对)2.消除递归不一定需要使用栈。

(对)3.栈、先进先出队列、优先级队列、双端队列等都可以看作是一个容器类的派生类。

该容器代表限制存取位置的顺序存取结构。

(对)三、问答1.在操作序列push(1),push(2),pop,push(5),push(7),pop,push(6)之后,栈顶元素和栈底元素分别是什么?2.在操作序列Qinsert(1),Qinsert(2),Qdelete,Qinsert(5),Qinsert(7),Qdelete,Qinsert(9)之后,队头元素和队尾元素分别是什么?第5章数组一、选择1.设数组a[1..10,5..15]的元素以行为主序存放,每个元素占用4个存储单元,则数组元素a[i,j](1≤i≤10,5≤j≤15)的地址计算公式为( D )A.a-204+2i+jB.a-204+40i+4jC.a-84+i+jD.a-64+44i+4j2.对于二维数组A[1..4,3..6],设每个元素占两个存储单元,若分别以行和列为主序存储,则元素A[3,4]相对于数组空间起始地址的偏移量分别是( D )和( A )A.12B.14C.16D.183.将一个A[1..100,1..100]的三对角矩阵,按行优先存入一维数组B[1..298]中,A中元素A66,65(即元素下标)在B中的位置K为( B )A.198B.195C.1974.三对角线矩阵A[1..n][1..n]以行序为主顺序存储,其存储始址是B,每个元素占一个存储单元,则元素A[i][j]的存储起始地址为(D )(1≤i,j≤n)A.b+2*j+i-2B.b+2*i+j-2C.b+2*j+i-3D.b+2*i+j-3第6章树和二叉树一、判断1.将一棵树转化为二叉树后,根结点可能有右子树。

(错)2.高度为K的二叉树至多有2k-1个结点。

(错)3.Huffman树、平衡二叉树属于逻辑结构。

(对)二、选择1.在一颗非空二叉树中,叶子节点的总数比度为2的节点总数多( C )个A.-1B.0C.1D.22.在一棵完全二叉树中,其根的序号为1,(A )可判定序号为p和q的两个结点是否在同一层。

A. │log2p」=│log2q」B.log2p=log2qC.│log2p」+1=│log2q」D.│log2p」=│log2q」+13.如果根的层次为1,具有61个结点的完全二叉树的高度为( B )A.5B.6C.7D.84.若二叉树的先序遍历序列为ABDECF,中序遍历序列DBEAFC,则其后序遍历序列为(D )A. DEBAFCB. DEFBCAC. DEBCFAD. DEBFCA5.由权值为9,2,5,7的四个叶子结点构造一棵哈夫曼树,该树的带权路径长度为( C )A.23B.37C.44D.466.( C )的遍历仍需要栈的支持A.前序线索树B.中序线索树C.后序线索树7.对于前序遍历和中序遍历结果相同的二叉树为( F );对于前序遍历和后序遍历结果相同的二叉树为( B )。

A.一般二叉树B.只有根结点的二叉树C.根结点无左孩子的二叉树D.根结点无右孩子的二叉树E.所有的结点只有左孩子的二叉树F.所有结点只有右孩子的二叉树8.哈夫曼树是带权路径长度最短的树,路径上权值较小的结点离根(C )A.不确定B.较近C.较远9.在线索化二叉树中,结点t没有左子树的充要条件是(B )A.t->lchild=nullB.t->ltag=1C.t->ltag=1 且t->lchild=null D以上都不对三、问答1.假设先根次序遍历某棵树的结点次序为SACEFBDGHIJK,后根次序遍历该树的结点次序为CFEABHGIKJDS,要求画出这棵树。

2.简述二叉哈夫曼树的建树方法。

3.设记录的关键字(key)集合K={26,36,41,44,15,68,12,6,51,25},以K为权值集合,构建一棵哈夫曼树,依次取K中各值,构建一棵二叉排序树。

第7章图一、判断1、不是所有的AOV网都有一个拓朴序列。

(对)2、每个加权连通无向图的最小生成树都是惟一的。

(错)3、邻接表对于有向图和无向图的存储都适用。

(对)二、选择1、采用邻接表表示一有向图,若图中某顶点的入度和出度分别为d1和d2,则该顶点对应的单链表的结点数为( B )A.d1B.d2C.d1-d2D.d1+d22、具有n(n>0)个顶点的无向图最多含有(C )条边A.n(n-1)B.n(n+1)/2C.n(n-1)/2D.n(n+1)3、无向图中一个顶点的度是指图中( C )A.通过该顶点的简单路径数B.通过该顶点的回路数C.与该顶点相邻接的顶点数D.与该顶点连通的顶点数4、一个具有n(n>0)个顶点的连通无向图至少有( D )条边A.n+1B.nC.n/2D.n-15、无向图G=(V,A),其中V={a,b,c,d,e},A={<a,b>,<a,c>,<d,c>,<d,e>,<b,e>,<c,e>},对该图进行拓朴排序,下面序列中哪一个不是拓朴序列.( D )A.a,d,c,b,eB.d,a,b,c,eC.a,b,d,c,eD.a,b,c,e,d6、在对有向图G进行拓扑排序的目的不是(B )。

相关文档
最新文档