数据结构习题课-数据结构习题课6
数据结构练习题(含答案)(DOC)

数据结构练习题习题1 绪论单项选择题1. 数据结构是一门研究非数值计算的程序设计问题中,数据元素的①、数据信息在计算机中的②以及一组相关的运算等的课程。
①A.操作对象B.计算方法C.逻辑结构D.数据映象②A.存储结构B.关系C.运算D.算法2. 数据结构DS(Data Struct)可以被形式地定义为DS=(D,R),其中D是①的有限集合,R是D上的②有限集合。
①A.算法B.数据元素C.数据操作D.数据对象②A.操作B.映象C.存储D.关系3. 在数据结构中,从逻辑上可以把数据结构分成。
)A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构4. 算法分析的目的是①,算法分析的两个主要方面是②。
① A. 找出数据结构的合理性 B. 研究算法中的输入和输出的关系C. 分析算法的效率以求改进D. 分析算法的易懂性和文档性② A. 空间复杂性和时间复杂性 B. 正确性和简明性C. 可读性和文档性D. 数据复杂性和程序复杂性5. 计算机算法指的是①,它必具备输入、输出和②等五个特性。
① A. 计算方法 B. 排序方法C. 解决问题的有限运算序列D. 调度方法!② A. 可行性、可移植性和可扩充性 B. 可行性、确定性和有穷性C. 确定性、有穷性和稳定性D. 易读性、稳定性和安全性填空题(将正确的答案填在相应的空中)1. 数据逻辑结构包括、和三种类型,树形结构和图形结构合称为。
2. 在线性结构中,第一个结点前驱结点,其余每个结点有且只有个前驱结点;最后一个结点后续结点,其余每个结点有且只有个后续结点。
3. 在树形结构中,树根结点没有结点,其余每个结点有且只有个直接前驱结点,叶子结点没有结点,其余每个结点的直接后续结点可以。
4. 在图形结构中,每个结点的前驱结点数和后续结点数可以。
5. 线性结构中元素之间存在关系,树形结构中元素之间存在关系,图形结构中元素之间存在关系。
数据结构课后习题答案及解析第六章

第六章树和二叉树(下载后用阅读版式视图或web版式可以看清)习题一、选择题1.有一“遗传”关系:设x是y的父亲,则x可以把它的属性遗传给y。
表示该遗传关系最适合的数据结构为( )。
A.向量B.树 C图 D.二叉树2.树最合适用来表示( )。
A.有序数据元素 B元素之间具有分支层次关系的数据C无序数据元素 D.元素之间无联系的数据3.树B的层号表示为la,2b,3d,3e,2c,对应于下面选择的( )。
A. la (2b (3d,3e),2c)B. a(b(D,e),c)C. a(b(d,e),c)D. a(b,d(e),c)4.高度为h的完全二叉树至少有( )个结点,至多有( )个结点。
A. 2h_lB.h C.2h-1 D. 2h5.在一棵完全二叉树中,若编号为f的结点存在右孩子,则右子结点的编号为( )。
A. 2iB. 2i-lC. 2i+lD. 2i+26.一棵二叉树的广义表表示为a(b(c),d(e(,g(h)),f)),则该二叉树的高度为 ( )。
A.3B.4C.5D.67.深度为5的二叉树至多有( )个结点。
A. 31B. 32C. 16D. 108.假定在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为( )个。
A. 15B. 16C. 17D. 479.题图6-1中,( )是完全二叉树,( )是满二叉树。
..专业知识编辑整理..10.在题图6-2所示的二叉树中:(1)A结点是A.叶结点 B根结点但不是分支结点 C根结点也是分支结点 D.分支结点但不是根结点(2)J结点是A.叶结点 B.根结点但不是分支结点 C根结点也是分支结点 D.分支结点但不是根结点(3)F结点的兄弟结点是A.EB.D C.空 D.I(4)F结点的双亲结点是A.AB.BC.CD.D(5)树的深度为A.1B.2C.3D.4(6)B结点的深度为A.1B.2C.3D.4(7)A结点所在的层是A.1B.2C.3D.4..专业知识编辑整理..11.在一棵具有35个结点的完全二叉树中,该树的深度为( )。
数据结构 习题课

算 法
练习5 若已知非空线性链表第一个结点的指针为list, 请 写一个算法, 将该链表中数据域值最小的那个 移到链表的最前端。
list
35 67 18
…
52
10
14
71
…
82
65
q
p
^
list=q;
list
35 67 18
s->link=q->link;
…
52 10 14 71
…
82
65
s
q
^
(删除表中第i元素)
寻找满足条件的元素,即从表中第一个 元素开始到最后那个元素,反复比较相邻的 两个元素是否相同,若相同,删除其中一个, 否则,比较下一对相邻元素。
for(j=i+1; j<n; j++) A[j−1]=A[j]; n--;
(删除表中第i元素)
void DEL( ElemType A[ ], int &n ) { int j, i=0; 比较相邻元素 while(i<n-1) if(A[i]!=A[i+1]) i++; else { for(j=i+1; j<n; j++) A[j−1]=A[j]; n– – ; } } 删除一个元素
list
35 68 59 28
q->link=list;
… q p r r sp qp
r=p; p=p->link;
void REMOVE(LinkList &list ) { 算法 LinkList q=list,s,r; p=list → link; r=list; while (p!=NULL) { if (p→data<q→data) then 寻找值最小结点 { s=r; q=p; } r=p; O (链表长度) p=p→link; // 找到值最小的那个结点 ,地址由q记录 // } if (q!=list) then // 若值最小的结点不是链表最前面那个结点 // { s→link=q→link; q→link=list; list=q ; list s q } } … … 28 39 35 82
数据结构课后习题及解析第六章

数据结构课后习题及解析第六章第六章习题1.试分别画出具有3个结点的树和3个结点的二叉树的所有不同形态。
2.对题1所得各种形态的二叉树,分别写出前序、中序和后序遍历的序列。
3.已知一棵度为k的树中有n1个度为1的结点,n2个度为2的结点,……,nk个度为k的结点,则该树中有多少个叶子结点并证明之。
4.假设一棵二叉树的先序序列为EBADCFHGIKJ,中序序列为ABCDEFGHIJK,请画出该二叉树。
5.已知二叉树有50个叶子结点,则该二叉树的总结点数至少应有多少个?6.给出满足下列条件的所有二叉树:①前序和后序相同②中序和后序相同③前序和后序相同7. n个结点的K叉树,若用具有k个child域的等长链结点存储树的一个结点,则空的Child 域有多少个?8.画出与下列已知序列对应的树T:树的先根次序访问序列为GFKDAIEBCHJ;树的后根次序访问序列为DIAEKFCJHBG。
9.假设用于通讯的电文仅由8个字母组成,字母在电文中出现的频率分别为:0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10请为这8个字母设计哈夫曼编码。
10.已知二叉树采用二叉链表存放,要求返回二叉树T的后序序列中的第一个结点指针,是否可不用递归且不用栈来完成?请简述原因.11. 画出和下列树对应的二叉树:12.已知二叉树按照二叉链表方式存储,编写算法,计算二叉树中叶子结点的数目。
13.编写递归算法:对于二叉树中每一个元素值为x的结点,删去以它为根的子树,并释放相应的空间。
14.分别写函数完成:在先序线索二叉树T中,查找给定结点*p在先序序列中的后继。
在后序线索二叉树T中,查找给定结点*p在后序序列中的前驱。
15.分别写出算法,实现在中序线索二叉树中查找给定结点*p在中序序列中的前驱与后继。
16.编写算法,对一棵以孩子-兄弟链表表示的树统计其叶子的个数。
17.对以孩子-兄弟链表表示的树编写计算树的深度的算法。
北邮C++数据结构课后习题 习题6参考答案

习题61.填空题(1)由10000个结点构成的二叉排序树,在等概率查找的条件下,查找成功时的平均查找长度的最大值可能达到(___________)。
答案:5000.5(2)长度为11的有序序列:1,12,13,24,35,36,47,58,59,69,71进行等概率查找,如果采用顺序查找,则平均查找长度为(___________),如果采用二分查找,则平均查找长度为(___________),如果采用哈希查找,哈希表长为15,哈希函数为H(key)=key%13,采用线性探测解决地址冲突,即d i=(H(key)+i)%15,则平均查找长度为(保留1位小数)(___________)。
答案:6,3,1.6(3)在折半查找中,查找终止的条件为(___________)。
答案:找到匹配元素或者low>high?(4)某索引顺序表共有元素275个,平均分成5块。
若先对索引表采用顺序查找,再对块元素进行顺序查找,则等概率情况下,分块查找成功的平均查找长度是(___________)。
答案:31(5)高度为8的平衡二叉树的结点数至少是(___________)。
答案: 54 计算公式:F(n)=F(n-1)+F(n-2)+1(6)对于这个序列{25,43,62,31,48,56},采用的散列函数为H(k)=k%7,则元素48的同义词是(___________)。
(7)在各种查找方法中,平均查找长度与结点个数无关的查找方法是(___________)。
答案:散列查找(8)一个按元素值排好的顺序表(长度大于2),分别用顺序查找和折半查找与给定值相等的元素,平均比较次数分别是s和b,在查找成功的情况下,s和b的关系是(___________);在查找不成功的情况下,s和b的关系是(___________)。
答案:(1)(2s-1)b=2s([log2(2s-1)]+1)-2[log2(2s-1)]+1+1(2)分两种情况考虑,见解答。
数据结构课程课后习题集答案解析

《数据结构简明教程》练习题及参考答案练习题11. 单项选择题(1)线性结构中数据元素之间是()关系。
A.一对多B.多对多C.多对一D.一对一答:D(2)数据结构中与所使用的计算机无关的是数据的()结构。
A.存储B.物理C.逻辑D.物理和存储答:C(3)算法分析的目的是()。
A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性答:C(4)算法分析的两个主要方面是()。
A.空间复杂性和时间复杂性B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性答:A(5)计算机算法指的是()。
A.计算方法B. 排序方法C.求解问题的有限运算序列D.调度方法答:C(6)计算机算法必须具备输入、输出和()等5个特性。
A.可行性、可移植性和可扩充性B.可行性、确定性和有穷性C.确定性、有穷性和稳定性D.易读性、稳定性和安全性答:B2. 填空题(1)数据结构包括数据的①、数据的②和数据的③这三个方面的内容。
答:①逻辑结构②存储结构③运算(2)数据结构按逻辑结构可分为两大类,它们分别是①和②。
答:①线性结构②非线性结构(3)数据结构被形式地定义为(D,R),其中D是①的有限集合,R是D上的②有限集合。
答:①数据元素②关系数据结构简明教程(4)在线性结构中,第一个结点 ① 前驱结点,其余每个结点有且只有1个前驱结点;最后一个结点 ② 后继结点,其余每个结点有且只有1个后继结点。
答:①没有 ②没有 (5)在树形结构中,树根结点没有 ① 结点,其余每个结点有且只有 ② 个前驱结点;叶子结点没有 ③ 结点,其余每个结点的后继结点数可以是 ④ 。
答:①前驱 ②1 ③后继 ④任意多个(6)在图形结构中,每个结点的前驱结点数和后继结点数可以是( )。
答:任意多个(7)数据的存储结构主要有四种,它们分别是 ① 、 ② 、 ③ 和 ④ 存储结构。
答:①顺序 ②链式 ③索引 ④哈希(8)一个算法的效率可分为 ① 效率和 ② 效率。
数据结构习题课(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. 算法的计算量的大小称为计算的()。
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,下面的四个序列中,不可能是它的输出序列的是()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法Ack(m, n. r) //非递归方法求解Ackerman(m,n) A1[初始化]
CREATS(s). S(m,n). A2[非递归求解]
WHILE NOT StackEmpty(s) DO( (mt,nt) S. IF mt=0 THEN ( r ← nt+1. IF StackEmpty(s) THEN RETURN. ELSE ( (mt, nt) S. S (mt, r).) // 确定第二次
参考答案
• 非递归算法思路:使用堆栈存储递归调用的记录,记录 中包含的项目只包含输入参数,需要传送输出参数的值。 递归调用发生的情况:
- m=0:可以直接得到返回值 - n=0:只调用Ack(m-1,1),且其与其父调用返回值相等,因此
可以用Ack(m-1,1)直接代替父调用。 - 其他情况:会发生两次递归调用,第一次调用的值是第二次
(0, 2) (1, #)
(1,3)
• 非递归求Ack(1,3)
(1, 2) (0, #)
(1,1) (0, #) (0, #)
(1,0) (0, #) (0, #) (0, #)
(0,1) (0, #) (0, #) (0, #)
(0,2) (0, #) (0, #)
(0,3) (0, #) (0,4)
1,y) + x+
F(x,y y
1)
[A] 1
[B] 2
[C] 3
[D] 4
x > 0且y > 0 否则
6-3
设有一个递归算法如下: int fact (int n) {
if (n<=0) return 1; else return fact(n-1); } 下面叙述正确的是 . [A] 计算fact(n)需要执行n-1次递归调用 [B] fact(70)=5040 [C] 此递归算法最多只能计算到fact(8) [D] 以上结论都不对
程中发生了几次递归调用? (3)执行pow(x,n)最多发生了几次递归调用?
参考答案
• (1)此递归函数返回x的n次方值。要计算x的n次方值, 可以首先递归计算x的n-1次方值,然后再将所得结果与x 相乘。当n的值为0时,返回值为1,递归终止;
• (2)执行pow(2,5)的结果是32,pow(2,5)执行过程中发 生了5次递归调用;
(2)使用一个数组,写出计算Ackerman函数的非递归算法;
(3)根据非递归算法求出Ack(2,1)的值。
参考答案
• 递归算法 int Ack(int m, int n) {
if (m==0) return n+1; if (n==0) return Ack(m-1,1); return Ack(m-1, Ack(m,n-1)); }
• Ack(2,1)=5
6-12
• 根据例6.4 和例6.5, (1) 给出HR(3, 1, 2, 3)递归算法的移动过程; (2) 以HI(3, 1, 2, 3)为例,给出堆栈的变化过程。
参考答案
• (1)
13 12 32 13 21 23 13
(2)
(3, 1, 2, 3)
(2, 1, 3, 2) (1, 1, 2, 3) (2, 2, 1, 3)
递归调用的第二参数
) ELSEIF nt=0 THEN S (mt-1,1). ELSE (S (mt-1,#). S (mt,nt-1).) )▌
参考答案
• 非递归求Ack(2,1)
(2,1)
(1,0) (2, 0) (1, 1) (0, #) (1, #) (1, #) (1, #)
(0,1) (0, #) (1, #)
(1, 1, 2, 3) (1, 1, 2, 3) (1, 3, 1, 2) (1, 1, 2, 3) (2, 2, 1, 3)
(2, 2, 1, 3)
(1, 2, 3, 1) (1, 2, 1, 3) (1, 1, 2, 3)
THE END
• (3)执行pow(x,n)最多发生了n次递归调用。
6-11
• 已知Ackerman函数定义如下:
A(1c)写k(出m计,n算) =AckìïïïíïïïïîeArmckan(函mA数-c的k1n,(递Am+c归-k1算(1m,法1,)n;- 1))
m= 0 m ? 0,n 0 m 构0,n 0
数据结构习题第6章
赖永 *** 2016.10.20
6-1
• 递归函数F(n)=F(n-1)+n+1(n>1)的递归终止条件是 .
[A] F(0)=0
[B] F(1)=1
[C] F(0)=1
[D] F(n)=n
6-2
• 函数F(x, y)定义为
FF((2x, ,1y)的) =值是ìïïíïïî F(x. -
6-6
有如下递归函数: double pow(double x, int n) {
if (n == 0) return 1.0; return x*pow(x,n-1); } (1)函数pow(double x, int n)的功能是什么?思想
是什么? (2)执行pow(2,5)的结果是什么,pow(2,5)执行过