数据结构第四教学单元测验练习题(答案)(自动保存的)

合集下载

数据结构第4章习题.docx

数据结构第4章习题.docx

第4章习题解答一、填空1.字符串是一种特殊的线性表,特殊在于它的数据元素只能是一字符,特殊在于串可以作为一个__________ 参与所需要的处理。

2.空格串是由___ 组成的串,空串是_________ 的串,因此空格串和空串不是一个概念。

3.字符串中任意多个_______ 字符所组成的子序列,被称作是这个串的“子串”,这个字符串木身则称为“主串”。

4.我们说两个字符串相等,在计算机内部实际上是通过对相应位置上字符__________ 码的比较而得到的结论。

5.设有串s=<t I am a teacher"。

该串的长度是_________ 。

6.设有三个串:sl=“Good", s2=9', s3=“bye!''。

则si、s2、s3连接后的结果串应该是7.所谓“数组”,是指〃(H>1)个具有」业L类型的数据的有序集合。

8.矩阵与通常所说的[维数组冇关。

9.所谓“特殊矩阵”,是指那些元素在矩阵小的分布具有一定规律性的矩阵;而矩阵小的零元素个数远远多于非零元素的个数,但非零元素的分布却没有规律,这样的矩阵被称为“稀疏矩阵”。

10.在一个阶方阵A中,若所有元素都有性质:= n),就称其为对称矩阵。

二、选择1 •设有两个串si和s20求s2在si中首次出现的位置的操作称为__________ oA.连接B.模式匹配C.求了串D.求串长2・有串:“①",那么它的长度是____ oA. 0B. 1C. 2D. 33.设有串sl=“ABCDEFG'和s2=“PQRSF'。

已知:算法con(x, y)返回串x和y的连接串;subs(s, i, j)返回串s的第i个字符开始往后j个字符组成的子串;len(s)返回串s的长度。

那么,con(subs(sl, 2, len(s2)), subs(sl, len(s2), 2))的操作结果是串__________ 。

数据结构第四教学单元测验练习题(答案) (自动保存的)

数据结构第四教学单元测验练习题(答案) (自动保存的)

《数据结构》第4教学单元测试练习题一、选择题1. 对N个元素的表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为( ) A.(N+1)/2 B. N/2 C. N D. [(1+N)*N ]/2 AB2.适用于折半查找的表的存储方式及元素排列要求为( )A.链接方式存储,元素无序B.链接方式存储,元素有序C.顺序方式存储,元素无序D.顺序方式存储,元素有序3.当在一个有序的顺序存储表上查找一个数据时,即可用折半查找,也可用顺序查找,但前者比后者的查找速度( )A.必定快 B.不一定 C. 在大部分情况下要快 D. 取决于表递增还是递减4. 具有12个关键字的有序表,折半查找的平均查找长度()A. 3.1B. 4C. 2.5D. 55. 折半查找的时间复杂性为()A. O(n2)B. O(n)C. O(nlog n)D.O(logn)6.对有18个元素的有序表作折半查找,则查找A[3]的比较序列的下标为()A.1,2,3B.9,5,2,3 C.9,5,3 D.9,4,2,37.设有序表的关键字序列为{1,4,6,10,18,35,42,53,67,71,78,84,92,99},当用二分查找法查找健值为84的结点时,经()次比较后查找成功。

A.2 B. 3 C. 4D.128、用n个键值构造一棵二叉排序树,最低高度为()A.n/2B.、nC.lognD.logn+19.分别以下列序列构造二叉排序树,与用其它三个序列所构造的结果不同的是( ) 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)10.设有一组记录的关键字为{19,14,23,1,68,20,84,27,55,11,10,79},用链地址法构造散列表,散列函数为H(key)=key% 13,散列地址为1的链中有()个记录。

数据结构 第四章测验 测验答案 慕课答案 UOOC优课 课后练习 深圳大学

数据结构 第四章测验 测验答案 慕课答案 UOOC优课 课后练习 深圳大学

数据结构第四章测验一、单选题 (共100.00分)1. 以下结构中,哪一个是属于逻辑结构()A. 顺序表B. 链栈C. 循环队列D. 串正确答案:D2. 以下哪一种是串在计算机中的常见表示方式()A. 定长顺序B. 堆分配C. 块链D. 前三种都是正确答案:D3. 在数据结构中,串可以等同于()的处理A. 整数串B. 浮点数串C. 字符串D. 多种类型的数组正确答案:C4. 以下哪一种是串匹配的常用算法()A. 普里姆算法B. 克鲁斯卡尔算法C. KMP算法D. 关键路径算法正确答案:C5. 已知主串为abcbcaddabc,模式串为cad,假设串位置从1开始,则串匹配位置是()A. 3B. 5C. 7D. 不存在正确答案:B6. 已知模式串为abaab,则next数组为()A. 1122B. 22312C. 1212D. 1112正确答案:A7. 已知串S的内容为1+2+3,以下描述哪一个是正确的()A. 串S的长度是6B. 串S的运算结果是6C. 整数1是串S的子串D. 符号+是串S的子串正确答案:D8. 以下描述哪一个是正确的()A. 串是字符有限序列B. 串是整数、浮点数、字符等多种数据的有限序列C. 只包含空格的串称为空串D. 串只能使用顺序表存储正确答案:A9. 串的长度是指()A. 串中包含不同字母的个数B. 串中所含字符的个数C. 串中包含不同字符的个数D. 串中包含非空格的字符的个数正确答案:B10. 串函数Sub(S, x, y)表示在串S中,从x位置开始,取出y个字符,串位置从1开始计算。

已知串S内容为Shenzh en,则Sub(S, 2, 3)是()A. SheB. zhenC. ShenD. hen正确答案:D。

数据结构练习试卷4(题后含答案及解析)

数据结构练习试卷4(题后含答案及解析)

数据结构练习试卷4(题后含答案及解析)题型有:1. 选择题选择题(每小题1分,共75分)下列各题A、B、C、D四个选项中,只有一个选项是正确的,请将此选项涂写在答题卡相应位置上,答在试卷上不得分。

1.在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为______。

A.63B.64C.6D.7正确答案:B解析:在长度为64的有序线性表中,其中的64个数据元素是按照从大到小或从小到大的顺序排列有序的。

在这样的线性表中进行顺序查找,最坏的情况就是查找的数据元素不在线性表中或位于线性表的最后。

按照线性表的顺序查找算法,首先用被查找的数据和线性表的第一个数据元素进行比较,若相等,则查找成功,否则,继续进行比较,即和线性表的第二个数据元素进行比较。

同样,若相等,则查找成功,否则,继续进行比较。

依次类推,直到在线性表中查找到该数据或查找到线性表的最后一个元素,算法才结束。

因此,在长度为64的有序线性表中进行顺序查找,最坏的情况下需要比较64次。

因此,本题的正确答案为B。

知识模块:数据结构2.对长度为n的线性表进行顺序查找,在最坏情况下,所需要的比较次数为______。

A.1og2nB.n/2C.n2D.n+1正确答案:C解析:在长度为n的线性表中进行顺序查找,最坏情况下需要比较n次。

选项C正确。

知识模块:数据结构3.设有100个结点,用二分法查找时,最大比较次数是______。

A.25B.50C.10D.7解析:在最坏情况下,二分法查找的比较次数均为[1og2(n+1)L]。

n为100时,最大比较次数为7。

所以,本题应该选择D。

知识模块:数据结构4.如果要求一个线性表既能较快地查找,又能适应动态变化的要求,则可采用______的方法。

A.分块B.顺序C.二分法D.基于属性正确答案:A解析:二分法是快速查找方法,但要求线性表是有序的。

如果把线性表按趋势分块,也就是说,块之间有序,块内不一定有序。

《数据结构》单元测试1(含答案)

《数据结构》单元测试1(含答案)

《数据结构》单元测试1一、选择题(每题2分,共40分)1.数据的最小单位是( A)。

(A) 数据项(B) 数据类型(C) 数据元素(D) 数据变量2. 栈和队列的共同特点是( A )。

(A)只允许在端点处插入和删除元素(B)都是先进后出(C)都是先进先出(D)没有共同点3. 用链接方式存储的队列,在进行插入运算时( D )。

(A)仅修改头指针(B)头、尾指针都要修改(C)仅修改尾指针 (D)头、尾指针可能都要修改4. 以下数据结构中哪一个是非线性结构?( D )(A)队列(B)栈(C)线性表(D)二叉树5.函数substr(“DATASTRUCTURE”,5,9)的返回值为( A )。

(A) “STRUCTURE”(B) “DATA”(C) “ASTRUCTUR”(D) “DATASTRUCTURE”6.设一个有序的单链表中有n个结点,现要求插入一个新结点后使得单链表仍然保持有序,则该操作的时间复杂度为( D)。

(A) O(log2n) (B) O(1) (C) O(n2) (D) O(n)7.设一棵m叉树中度数为0的结点数为N0,度数为1的结点数为Nl,……,度数为m的结点数为Nm,则N0=( B)。

(A) Nl+N2+……+Nm(B) 1+N2+2N3+3N4+……+(m-1)Nm(C) N2+2N3+3N4+……+(m-1)Nm (D) 2Nl+3N2+……+(m+1)Nm 8.设有序表中有1000个元素,则用二分查找查找元素X最多需要比较( B)次。

(A) 25 (B) 10 (C) 7 (D) 19. 二叉树的第k层的结点数最多为( D )。

(A)2k-1 (B) 2K+1 (C) 2K-1 (D)2k-110. 树最适合用来表示( C )。

(A)有序数据元素(B)无序数据元素(C)元素之间具有分支层次关系的数据 (D)元素之间无联系的数据个权构成一棵Huffman树,其节点总数为( A )。

数据结构第4章作业参考答案

数据结构第4章作业参考答案

第4章(数组和广义表)作业参考答案一、单项选择题1.将一个A[1..100,1..100]的三对角矩阵,按行优先压缩存储到一维数组B[1‥298]中,A 中元素A[66][65]在B数组中的位置K为(C )。

A. 198B. 197C. 195D. 1962.广义表(a,(b,c),d,e)的表头为( A )。

A. aB. a,(b,c)C. (a,(b,c))D. (a)3.在三对角矩阵中,非零元素的行标i和列标j的关系是( A )。

A. |i-j|≤1B. i>jC. i==jD. i<j4.广义表L=(a,(b,c)),进行Tail(L)操作后的结果为( D )。

A. cB. b,cC.(b,c)D.((b,c))5.设二维数组A[1..m,1..n](即m行n列)按行存储在数组B[1..m*n]中,则二维数组元素A[i,j]在一维数组B中的下标为( D )。

A. j*m+i-1B. (i-1)*n+j-1C. i*(j-1)D. (i-1)*n+j6.广义表(( ),( ),( ))的深度为( C )。

A. 0B. 1C. 2D. 37.假设以行序为主序存储二维数组A[0..99,0..99],设每个数据元素占2个存储单元,基地址为10,则LOC(A[4][4])=( C )。

A. 1020B. 1010C. 818D. 8088.已知广义表A=((a,b),(c,d)),则head(A)等于( A )。

A. (a,b)B. ((a,b))C. a,bD. a9.已知一个稀疏矩阵的三元组表如下:(1,2,3),(1,6,1),(3,1,5),(3,2,-1),(4,5,4),(5,1,-3)则其转置矩阵的三元组表中第3个三元组为( C )。

A. (2,3,-1)B. (3,1,5)C. (2,1,3)D. (3,2,-1)10.广义表((b,c),d,e)的表尾为( C )。

数据结构模拟试题4参考答案.

数据结构模拟试题4参考答案.

数据结构模拟试题4参考答案一、选择题(20分)1-5 A C A B D6-10 B B C A D二、填空题(20分)1.n2.只由空格字符组成的字符串空格字符的个数3.5 34.k(k+1)/25.36.77.128.二叉树无左子树三、应用题(30分)1.参考答案如下:2.参考答案如下:1)2)9 4 3 8 10 7 6 56 8 94 5 103 76 4 3 8 5 79 103.参考答案如下:4.参考答案如下: 1)25.参考答案如下:1)哈希表a 及其生成过程如下:19:5 24:310:3,417:3,4,5,615:138:3,4,5,6,718:4,5,6,7,840:5,6,7,8,9ASL=(1+1+2+4+1+5+5+5)/8=24/8=30 1 2 3 4 52)哈希表b及其生成过程如下:19:524:310:3,417:3,4,215:138:3,4,2,718:4,5,3,840:5,6,4,9ASL=(1+1+2+3+1+4+4+4)/8=20/8=2.50 1 2 3 4 56.参考答案如下:四.算法设计题(30分)1.算法源代码如下:void delete(link h){link q, p;p=h->next;while(p!=NULL){ q=p;p=p->next;while(p->data==q->data){ q->next=p->next; free(p);p=q->next;}}}2.算法源代码如下:void huffmancode(htnode *ht, int m, char *hc[], int n){ int i,start,c,p;char cd[m]; cd[m-1]='\0';for(i=0;i<n;++i){ start=m-1; c=i; p=ht[i].parent;while(p!=-1){ if(ht[p].lchild==c) cd[--start]='0';else cd[--start]='1';c=p; p=ht[p].parent; }strcpy(hc[i],&cd[start]); }}3.算法源代码如下:int idk(algraph graph, int k){ arcptr p;int count=0, i;/*求邻接表中顶点k的入度*/for (i=1;i<=graph.vexnum;++i){ p=graph.vertices[i].firstarc;while(p!=NULL){ if(p->adjvex==k) count++;p=p->nextarc; }}}。

数据结构第四章的习题答案

数据结构第四章的习题答案

数据结构第四章的习题答案数据结构第四章的习题答案在学习数据结构的过程中,习题是非常重要的一环。

通过解答习题,我们可以更好地理解和应用所学的知识。

在第四章中,我们学习了树和二叉树的相关概念和操作。

下面我将为大家提供一些第四章习题的答案,希望能帮助大家更好地掌握这一章节的内容。

1. 请给出树和二叉树的定义。

树是由n(n>=0)个结点构成的有限集合,其中有且仅有一个特定的结点称为根结点,其余的结点可以分为若干个互不相交的有限集合,每个集合本身又是一个树,称为根的子树。

二叉树是一种特殊的树结构,其中每个结点最多有两个子结点,分别称为左子结点和右子结点。

二叉树具有递归的定义,即每个结点的左子树和右子树都是二叉树。

2. 请给出树和二叉树的遍历方式。

树的遍历方式包括前序遍历、中序遍历和后序遍历。

前序遍历是先访问根结点,然后依次遍历左子树和右子树。

中序遍历是先遍历左子树,然后访问根结点,最后遍历右子树。

后序遍历是先遍历左子树和右子树,最后访问根结点。

二叉树的遍历方式包括前序遍历、中序遍历和后序遍历。

前序遍历是先访问根结点,然后依次遍历左子树和右子树。

中序遍历是先遍历左子树,然后访问根结点,最后遍历右子树。

后序遍历是先遍历左子树和右子树,最后访问根结点。

3. 给定一个二叉树的前序遍历序列和中序遍历序列,请构建该二叉树。

这个问题可以通过递归的方式解决。

首先,根据前序遍历序列的第一个结点确定根结点。

然后,在中序遍历序列中找到根结点的位置,该位置左边的结点为左子树的中序遍历序列,右边的结点为右子树的中序遍历序列。

接下来,分别对左子树和右子树进行递归构建。

4. 给定一个二叉树的中序遍历序列和后序遍历序列,请构建该二叉树。

和前面的问题类似,这个问题也可以通过递归的方式解决。

首先,根据后序遍历序列的最后一个结点确定根结点。

然后,在中序遍历序列中找到根结点的位置,该位置左边的结点为左子树的中序遍历序列,右边的结点为右子树的中序遍历序列。

数据结构的第4-7习题的答案

数据结构的第4-7习题的答案

4.10 线性表有两种存储结构,即顺序表和单链表。试问: (1)若有N个线性表同时并存,且在处理过程中各表长度会
动态发生变化,线性表的总数也会自动地改变,在此情况下 应选用哪种存储结构?为什么?
应采用链式存储结构,因为采用链式存储时插入删除操作不需 要移动数据元素
(2)若线性表的总数基本稳定,且很少进行插入和删除操作 ,但要以最快的速度存取表中元素,那么应采用哪种存储结 构?为什么?
pq
pq r
rq
head *
A
1
&C
3
$
D
E^
p=NULL r=NULL
Void invert(LinkList &head) { linklist p,q,r;
p=r=NULL; q=head; while(q!=NULL) {r=q->next; q->next=p; p=q; q=r; } head=p; }
3在长度为n的顺序表上进行 插入运算,有几个可插入的 位置?在第i(假设合法)个 位置上插入一个数据元素, 需要向什么方向平移多少个 数据元素?在长度为n的顺 序表上进行删除运算,有几 个可删除的数据元素?删除 第i(假设合法)个位置上的 数据元素,需要向什么方向 平移多少个数据元素?
1
2
第i个位置上插入,需向右移 动n-i+1个数据元素
Status EnQueue(stack &s1,ElemType x) { if(S1.top==n-1) return 0;
else {Push(s1,x); return 1;}} 时间复杂度T(n)=O(1)
Status DeQueue(stack &s1,Stack &s2,ElemType &x) { ElemType y; While(!StackEmpty(S1))

数据结构第4单元课后练习答案

数据结构第4单元课后练习答案
第四单元 树形结构
对于三个结点A,B和C,可分别组成多少 不同的无序树、有序树和二叉树?
答:(1)无序树:9棵 (2)有序树:12棵 (3)二叉树:30棵
高度为h的k叉树的特点是:第h层的节点度为 0,其余结点的度均为k。如果按从上到下, 从左到右的次序从1开始编号,则: ①各层的结点是多少? ②编号为i的结点的双亲的编号是多少? ③编号为i的结点的第m个孩子的编号是多少? ④编号为i的结点的有右兄弟的条件是什么?
试证明在哈夫曼算法的实施过程中,二叉树森林中的每 一棵子树都是Huffman树。
证明: 在Huffman算法进行的每一步,都会有一棵新的二叉树产生,它是合并 原来森林中根结点权值最小的两棵子树而得来的。假设此二叉树为T。 取T的根为一棵独立的子树,则它是一棵Huffman树,将此结点向下分 解,仍然得到一棵Huffman树。 此后,按照与T的形成过程相反的顺序依次分解各叶结点。由于在每次 分解时,新产生的两个叶结点在Huffman算法过程中,都是待合并子树根 结点中权值最小的,也就必然在本二叉树中是权值最小的两个叶结点。 根据前面的定理可知,T是一棵Huffman树。
试证明哈夫曼算法的正确性。
定理 分裂一棵Huffman树的某个叶结点,如果产生的两个叶结点的权值 在所有叶结点权值中最小,则将生成一棵新的Huffman树。 证明: 假设二叉树T是字母表C上的一棵Huffman树,z是它的一个叶节点。在 z的下面添加两个子结点x和y,它们的权值分别是f(x)和f(y),且满足 f(z)=f(x)+f(y), f(x)和f(y)在字母表C' =C-{z}+{x,y}上的权值最小,可设新 产生的二叉树为T'。 在字母表C'上存在一棵最优二叉树T",在T"上x和y互为兄弟结点。在 T"中删除结点x和y,将字母z以及权值f(z)=f(x)+f(y)赋予x和y在T"中的父 结点,得到一棵在字母表C上的二叉树Ť。 根据引理三,可知Ť是字母表C上的最优二叉树,由于T也是字母表C上 的最优二叉树,所以WPL(Ť)= WPL(T)。 由于WPL(Ť)= WPL(T")-f(x)-f(y), WPL(T)= WPL(T')-f(x)-f(y),所以 WPL(T")=WPL(T'),即,T'是字母表C'上的最优二叉树。证毕。 补充说明:利用Huffman算法构造一棵二叉树T后,单独取出根结点和它 的两个子结点,则该子树必是一棵最优二叉树。以后,按照与T的形成过 程的相反的顺序依次分解各叶结点,直到再次构造出T,则依据上面的定 理可知T是一棵Huffman树。

《数据结构(C语言版 第2版)》(严蔚敏 著)第四章练习题答案

《数据结构(C语言版 第2版)》(严蔚敏 著)第四章练习题答案

《数据结构(C语言版第2版)》(严蔚敏著)第四章练习题答案第4章串、数组和广义表1.选择题(1)串是一种特殊的线性表,其特殊性体现在()。

A.可以顺序存储B.数据元素是一个字符C.可以链式存储D.数据元素可以是多个字符若答案:B(2)串下面关于串的的叙述中,()是不正确的?A.串是字符的有限序列B.空串是由空格构成的串C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储答案:B解释:空格常常是串的字符集合中的一个元素,有一个或多个空格组成的串成为空格串,零个字符的串成为空串,其长度为零。

(3)串“ababaaababaa”的next数组为()。

A.012345678999 B.012121111212 C.011234223456 D.0123012322345答案:C(4)串“ababaabab”的nextval为()。

A.010104101B.010102101 C.010100011 D.010101011答案:A(5)串的长度是指()。

A.串中所含不同字母的个数B.串中所含字符的个数C.串中所含不同字符的个数D.串中所含非空格字符的个数答案:B解释:串中字符的数目称为串的长度。

(6)假设以行序为主序存储二维数组A=array[1..100,1..100],设每个数据元素占2个存储单元,基地址为10,则LOC[5,5]=()。

A.808 B.818 C.1010 D.1020答案:B解释:以行序为主,则LOC[5,5]=[(5-1)*100+(5-1)]*2+10=818。

(7)设有数组A[i,j],数组的每个元素长度为3字节,i的值为1到8,j的值为1到10,数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为()。

A.BA+141 B.BA+180 C.BA+222 D.BA+225答案:B解释:以列序为主,则LOC[5,8]=[(8-1)*8+(5-1)]*3+BA=BA+180。

《数据结构》第四章习题参考答案

《数据结构》第四章习题参考答案

《数据结构》第四章习题一、判断题(在正确说法的题后括号中打“√”,错误说法的题后括号中打“×”)1、KMP算法的特点是在模式匹配时指示主串的指针不会变小。

( √)2、串是一种数据对象和操作都特殊的线性表。

( √)3、只包含空白字符的串称为空串(空白串)。

( ×)4、稀疏矩阵压缩存储后,必会(不会)失去随机存取功能。

( ×)5、使用三元组表示稀疏矩阵的非零元素能节省存储空间。

( √)6、插入与删除操作是数据结构中最基本的两种操作,因此这两种操作在数组中也经常使用。

(×)7、若采用三元组表存储稀疏矩阵,只要把每个元素的行下标和列下标互换(错的),就完成了对该矩阵的转置运算。

(×)二、单项选择题1.下面关于串的的叙述中,哪一个是不正确的?( B )A.串是字符的有限序列B.空串是由空格构成的串(空串是长度为零的串)C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储2.有串S1=’ABCDEFG’,S2 = ’PQRST’,假设函数con(x,y)返回x和y串的连接串,subs(s,i,j)返回串s的从序号i的字符开始的j个字符组成的子串,len(s)返回中s的长度,则con(subs(s1,2,len(s2)),subs(s1,len(s2),2))的结果串是( D )。

A.BCDEF B.BCDEFG C.BCPQRST D.CDEFGFG3、串的长度是指( B )A.串中所含不同字母的个数B.串中所含字符的个数C.串中所含不同字符的个数D.串中所含非空格字符的个数三、填空题1、串是一种特殊的线性表,其特殊性表现在_数据元素为字符,操作集也不同__;串的两种最基本的存储方式是_顺序存储_、__ 链式存储_;两个串相等的充分必要条件是__两串的长度相等且两串中对应位置的字符也相等__。

2、设正文串长度为n,模式串长度为m,则串匹配的KMP算法的时间复杂度为_O(m+n)__。

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

数据结构练习题(含答案)(DOC)
tmp=a[i]; a[i]=a[j]; a[j]=tmp; } }
3. 已知线性表中的元素以值递增有序排列,并以单链表作存储结构。试写一算法,删除表中所有大于 x 且小于 y 的元 素(若表中存在这样的元素)同时释放被删除结点空间。
void del(LinkList L,elemtype a,elemtype b) { p= L;q=p->next;
习题答案
2.1 1. B 2. A, C 3. B 4. D 5. C 6. A 7. A 8. B
9. C 10. D 11.B 12.B 13.A 14.D 15.B 16.C
2.2 1. 线性结表
2. 前驱结点、后继结点
3. s, p 5. p->next, s
4. q->next, q 6. O (1) , O (n)
A. s->next=p->next; p->next=s; B. p->next=s->next; s->next=p;
B. q->next=s; s->next=p;
C. p->next=s; s->next=q;
12. 在一个单链表中,若 p 所指结点不是最后结点,在 p 之后插入 s 所指结点,则执行____。
6. 对于一个具有 n 个结点的单链表,在已知 p 所指结点后插入一个新结点的时间复杂度是__ __;在给定值为 x 的
结点后插入一个新结点的时间复杂度是__ __。
2.3 算法设计题:
1.设顺序表 va 中的数据元数递增有序。试写一算法,将 x 插入到顺序表的适当位置上,以保持该表的有序性。
Status Insert_SqList(SqList &va,int x) { if(va.length+1>maxsize) return ERROR; va.length++; for(i=va.length-1;va.elem[i]>x&&i>=0;i--) va.elem[i+1]=va.elem[i]; va.elem[i+1]=x; return OK;

数据结构单元4练习参考答案

数据结构单元4练习参考答案

数据结构单元4练习参考答案单元测验4⼀.判断题(下列各题,正确的请在前⾯的括号内打√;错误的打╳)(√)(1)队列是限制在两端进⾏操作的线性表。

(√)(2)判断顺序队列为空的标准是头指针和尾指针都指向同⼀个结点。

(×)(3)在链队列上做出队操作时,会改变front指针的值。

(√)(4)在循环队列中,若尾指针rear⼤于头指针front,其元素个数为rear- front。

(×)(5)在单向循环链表中,若头指针为h,那么p所指结点为尾结点的条件是p=h。

(√)(6)链队列在⼀定范围内不会出现队满的情况。

(×)(7)在循环链队列中⽆溢出现象。

(×)(8)栈和队列都是顺序存储的线性结构。

(×)(9)在队列中允许删除的⼀端称为队尾。

(×)(10)顺序队和循环队关于队满和队空的判断条件是⼀样的。

⼆.填空题(1)在队列中存取数据应遵循的原则是先进先出。

(2)队列是被限定为只能在表的⼀端进⾏插⼊运算,在表的另⼀端进⾏删除运算的线性表。

(3)在队列中,允许插⼊的⼀端称为队尾。

(4)在队列中,允许删除的⼀端称为队⾸(或队头)。

(5)队列在进⾏出队操作时,⾸先要判断队列是否为空。

(6)顺序队列在进⾏⼊队操作时,⾸先要判断队列是否为满。

(7)顺序队列初始化后,front=rear= -1 。

(8)解决顺序队列“假溢出”的⽅法是采⽤循环队列。

(9)循环队列的队⾸指针为front,队尾指针为rear,则队空的条件为 front == rear 。

(10)链队列LQ为空时,LQ->front->next= NULL 。

(11)设长度为n的链队列⽤单循环链表表⽰,若只设头指针,则⼊队操作的时间复杂度为 O(n)。

(12)设长度为n的链队列⽤单循环链表表⽰,若只设尾指针,则出队操作的时间复杂度为 0(1)。

(13)在⼀个链队列中,若队⾸指针与队尾指针的值相同,则表⽰该队列为空。

数据结构第四章考试题库(含答案)

数据结构第四章考试题库(含答案)

第四章串一、选择题1.下面关于串的的叙述中,哪一个是不正确的?()【北方交通大学 2001 一、5(2分)】A.串是字符的有限序列 B.空串是由空格构成的串C.模式匹配是串的一种重要运算 D.串既可以采用顺序存储,也可以采用链式存储2 若串S1=‘ABCDEFG’, S2=‘9898’ ,S3=‘###’,S4=‘’,执行concat(replace(S1,substr(S1,length(S2),length(S3)),S3),substr(S4,i ndex(S2,‘8’),length(S2))) 其结果为()【北方交通大学 1999 一、5 (25/7分)】A.ABC###G0123 B.ABCD###2345 C.ABC###G2345 D.ABC###2345E.ABC###G1234 F.ABCD###1234 G.ABC###012343.设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为()A.求子串 B.联接 C.匹配 D.求串长【北京邮电大学 2000 二、4(20/8分)】【西安电子科技大学 1996 一、1 (2分)】4.已知串S=‘aaab’,其Next数组值为()。

【西安电子科技大学 1996 一、7 (2分)】A.0123 B.1123 C.1231 D.12115.串‘ababaaababaa’的next数组为()。

【中山大学 1999 一、7】A.9 B.2 C.6 D.456.字符串‘ababaabab’的nextval 为()A.(0,1,0,1,04,1,0,1) B.(0,1,0,1,0,2,1,0,1)C.(0,1,0,1,0,0,0,1,1) D.(0,1,0,1,0,1,0,1,1 )【北京邮电大学 1999 一、1(2分)】7.模式串t=‘abcaabbcabcaabdab’,该模式串的next数组的值为(),nextval数组的值为()。

数据结构(C语言版)习题及答案第四章

数据结构(C语言版)习题及答案第四章

习题4.1选择题1、空串与空格串是(B)。

A、相同B、不相同C、不能确定2、串是一种特殊的线性表,其特殊性体现在(B)。

A、可以顺序存储B、数据元素是一个字符C、可以链式存储D、数据元素可以是多个字符3、设有两个串p和q,求q在p中首次出现的位置的操作是(B)。

A、连接B、模式匹配C、求子串D、求串长4、设串s1=“ABCDEFG”,s2=“PQRST”函数strconcat(s,t)返回s和t串的连接串,strsub(s,i,j)返回串s中从第i个字符开始的、由连续j个字符组成的子串。

strlength(s)返回串s的长度。

则strconcat(strsub(s1,2,strlength(s2)),strsub(s1,strlength(s2),2))的结果串是(D)。

A、BCDEFB、BCDEFGC、BCPQRSTD、BCDEFEF5、若串s=“software”,其子串个数是(B)。

A、8B、37C、36D、94.2简答题1、简述空串与空格串、主串与子串、串名与串值每对术语的区别?答:空串是指长度为0的串,即没有任何字符的串。

空格串是指由一个或多个空格组成的串,长度不为0。

子串是指由串中任意个连续字符组成的子序列,包含子串的串称为主串。

串名是串的一个名称,不指组成串的字符序列。

串值是指组成串的若干个字符序列,即双引号中的内容。

2、两个字符串相等的充要条件是什么?答:条件一是两个串的长度必须相等条件二是串中各个对应位置上的字符都相等。

3、串有哪几种存储结构?答:有三种存储结构,分别为:顺序存储、链式存储和索引存储。

4、已知两个串:s1=”fg cdb cabcadr”, s2=”abc”, 试求两个串的长度,判断串s2是否是串s1的子串,并指出串s2在串s1中的位置。

答:(1)串s1的长度为14,串s2的长度为3。

(2)串s2是串s1的子串,在串s2中的位置为9。

5、已知:s1=〃I’m a student〃,s2=〃student〃,s3=〃teacher〃,试求下列各操作的结果:strlength(s1);答:13strconcat(s2,s3);答:”studentteachar”strdelsub(s1,4,10);答:I’m6、设s1=”AB”,s2=”ABCD”,s3=”EFGHIJK,试画出它们在各种存储结构下的结构图。

数据结构(第4版)习题及实验参考答案 数据结构复习资料完整版(c语言版)

数据结构(第4版)习题及实验参考答案 数据结构复习资料完整版(c语言版)

数据结构基础及深入及考试复习资料习题及实验参考答案见附录结论1、数据的逻辑结构是指数据元素之间的逻辑关系。

即从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。

2、数据的物理结构亦称存储结构,是数据的逻辑结构在计算机存储器内的表示(或映像)。

它依赖于计算机。

存储结构可分为4大类:顺序、链式、索引、散列3、抽象数据类型:由用户定义,用以表示应用问题的数据模型。

它由基本的数据类型构成,并包括一组相关的服务(或称操作)。

它与数据类型实质上是一个概念,但其特征是使用与实现分离,实行封装和信息隐蔽(独立于计算机)。

4、算法:是对特定问题求解步骤的一种描述,它是指令的有限序列,是一系列输入转换为输出的计算步骤。

5、在数据结构中,从逻辑上可以把数据结构分成( C )A、动态结构和表态结构B、紧凑结构和非紧凑结构C、线性结构和非线性结构D、内部结构和外部结构6、算法的时间复杂度取决于( A )A、问题的规模B、待处理数据的初态C、问题的规模和待处理数据的初态线性表1、线性表的存储结构包括顺序存储结构和链式存储结构两种。

2、表长为n的顺序存储的线性表,当在任何位置上插入或删除一个元素的概率相等时,插入一个元素所需移动元素的平均次数为( E ),删除一个元素需要移动的元素的个数为( A )。

A、(n-1)/2B、nC、n+1D、n-1E、n/2F、(n+1)/2G、(n-2)/23、“线性表的逻辑顺序与存储顺序总是一致的。

”这个结论是( B )A、正确的B、错误的C、不一定,与具体的结构有关4、线性表采用链式存储结构时,要求内存中可用存储单元的地址( D )A、必须是连续的B、部分地址必须是连续的C一定是不连续的D连续或不连续都可以5、带头结点的单链表为空的判定条件是( B )A、head==NULLB、head->next==NULLC、head->next=headD、head!=NULL6、不带头结点的单链表head为空的判定条件是( A )A、head==NULLB、head->next==NULLC、head->next=headD、head!=NULL7、非空的循环单链表head的尾结点P满足( C )A、p->next==NULLB、p==NULLC、p->next==headD、p==head8、在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是(B )A、O(1)B、O(n)C、O(n2)D、O(nlog2n)9、在一个单链表中,若删除p所指结点的后继结点,则执行( A )A、p->next=p->next->next;B、p=p->next;p->next=p->next->next;C、p->next=p->next;D、p= p->next->next;10、在一个单链表中,若在p所指结点之后插入s所指结点,则执行( B )A、s->next=p;p->next=s;B、s->next=p->next;p->next=s;C、s->next=p->next;p=s;D、p->next=s;s->next=p;11、在一个单链表中,已知q是p的前趋结点,若在q和p之间插入结点s,则执行(C )A、s->next=p->next;p->next=s;B、p->next=s->next;s->next=p;C、q->next=s;s->next=p;D、p->next=s;s->next=q;12、在线性结构中,第一个结点没有前趋结点,其余每个结点有且只有 1 个前趋结点。

数据结构 第4章答案(已核 )

数据结构 第4章答案(已核 )

4.7习题一、选择(1)串是()。

A 不少于一个字母和序列B 任意个字母的序列C 不少于一个字符的序列D 有限个字符的序列(2)串的长度是()。

A 串中不同字母的个数B 串中不同字符的个数C 串中所含字符的个数,且大于0D 串中所含字符的个数(3)设串s1=‘abcdefg’,s2=‘pqrst’,函数CON(X,Y)返回X和串的连接串,SUB (S,I,J)返回串S的从序号I的字符开始的J个字符组成的子串,LEN(S)返回串S的长度,则CON(SUB(s1,2,LEN(s2)),SUB(s1,LEN(s2),2))的结果串是()。

A bcdefB bcdefgC bcpqrstD bcdefef注释:CON(SUB(s1,2,LEN(s2)), SUB(s1,LEN(s2),2))= CON(SUB(s1,2,5), SUB(s1,5,2))= CON(bcdef, ef)=bcdefef(4)数组A[1:5][1:6]的每个元素占5个单元,将其按行优先次序存储在起始起址为1000的连续的内存单元中,则元素A[5,5]的地址为(A)。

A 1140B 1145C 1120D 1125注释:该数组为5行6列,按照公式:Loc[i, j]=Loc[1,1] + (n×(i-1)+j-1)×size,其中m=5,n=6, size=5 ,那么Loc[5, 5]=Loc[1,1] + (6×(5-1)+5-1)×5=1140(5)对矩阵压缩存储是为了()。

A 方便运算B 节省空间C 方便存储D 提高运算速度(6)数组通常具有的两种基本操作是()。

A 插入与删除B 索引和修改C 查找和修改D 查找与删除注释:数组,连续存储,不适合经常插入和删除;适合经常查找和修改(定位后修改某单元内的值,单元个数和单元之间的逻辑顺序不做修改。

)(7)二维数组M[i,j]的行下标i的范围从0到4,列下标j的范围从0到5,M按行存储时元素M[3,5]的起始地址与M按列存储时元素()的起始地址相同。

数据结构第4章答案

数据结构第4章答案

一、填空题(每空1分,共15分)1. 向量、栈和队列都是线性结构,可以在向量的任何位置插入和删除元素;对于栈只能在栈顶插入和删除元素;对于队列只能在队尾插入和队首删除元素。

2. 栈是一种特殊的线性表,允许插入和删除运算的一端称为栈顶。

不允许插入和删除运算的一端称为栈底。

3. 队列是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。

4. 在一个循环队列中,队首指针指向队首元素的前一个位置。

5. 在具有n个单元的循环队列中,队满时共有n-1 个元素。

6. 向栈中压入元素的操作是先存入元素,后移动栈顶指针。

7.从循环队列中删除一个元素时,其操作是先移动队首指针,后取出元素。

8.带表头结点的空循环双向链表的长度等于0。

二、判断正误(判断下列概念的正确性,并作出简要的说明。

)(每小题1分,共10分)(×)1. 线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。

(×)2. 在表结构中最常用的是线性表,栈和队列不太常用。

(√)3. 栈是一种对所有插入、删除操作限于在表的一端进行的线性表,是一种后进先出型结构。

(√)4. 对于不同的使用者,一个表结构既可以是栈,也可以是队列,也可以是线性表。

(×)5. 栈和链表是两种不同的数据结构。

(×)6. 栈和队列是一种非线性数据结构。

(√)7. 栈和队列的存储方式既可是顺序方式,也可是链接方式。

(√)8. 两个栈共享一片连续内存空间时,为提高内存利用率,减少溢出机会,应把两个栈的栈底分别设在这片内存空间的两端。

(×)9. 队是一种插入与删除操作分别在表的两端进行的线性表,是一种先进后出型结构。

(×)10. 一个栈的输入序列是12345,则栈的输出序列不可能是12345。

三、单项选择题(每小题1分,共20分)(B)1.栈中元素的进出原则是A.先进先出B.后进先出C.栈空则进D.栈满则出(C)2. 若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为A.i B.n=i C.n-i+1 D.不确定(B)3. 判定一个栈ST(最多元素为m0)为空的条件是A.ST->top<>0 B.ST->top=0 C.ST->top<>m0 D.ST->top=m0(A)4. 判定一个队列QU(最多元素为m0)为满队列的条件是A.QU->rear-QU->front = = m0 B.QU->rear -QU->front -1= = m0 C.QU->front = = QU->rear D.QU->front = = QU->rear+1(D)5.数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素的公式为(A)r-f; (B)(n+f-r)% n;(C)n+r-f; (D)(n+r-f)% n6.设有4个数据元素a1、a2、a3和a4,对他们分别进行栈操作或队操作。

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

《数据结构》第4教学单元测试练
习题
一、选择题
1. 对N个元素的表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为( ) A.(N+1)/2 B. N/2 C. N D. [(1+N)*N ]/2
AB2.适用于折半查找的表的存储方式及元素排列要求为( )
A.链接方式存储,元素无序 B.链接方式存储,元素有序
C.顺序方式存储,元素无序D.顺序方式存储,元素有序
3.当在一个有序的顺序存储表上查找一个数据时,即可用折半查找,也可用顺序查找,但前者比后者的查找速度( )
A.必定快 B.不一定 C. 在大部分情况下要快 D. 取决于表递增还是递减
4. 具有12个关键字的有序表,折半查找的平均
查找长度()
A. 3.1
B. 4
C. 2.5
D. 5
5. 折半查找的时间复杂性为()
A. O(n2)
B. O(n)
C. O(nlog n)
D.O (logn)
6.对有18个元素的有序表作折半查找,则查找
A[3]的比较序列的下标为()A.1,2,3B.9,5,2,3 C.9,5,3 D.9,4,2,3
7.设有序表的关键字序列为{1,4,6,10,18,35,42,53,67,71,78,84,92,99},当用二
分查找法查找健值为84的结点时,经()
次比较后查找成功。

A.2 B. 3 C. 4
D.12
8、用n个键值构造一棵二叉排序树,最低高度
为()
A.n/2
B.、n
C.logn
D.logn+1
9.分别以下列序列构造二叉排序树,与用其它三个序列所构造的结果不同的是( ) 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)
10.设有一组记录的关键字为{19,14,23,1,68,20,84,27,55,11,10,79},用链地址法构造散列表,散列函数为H(key)=key% 13,散列地址为1的链中有()个记录。

A.1 B. 2 C. 3 D. 4
11.已知一采用开放地址法解决Hash表冲突,要从此Hash表中删除出一个记录,正确的做法是()A.将该元素所在的存储单元清空。

B.将该元素用一个特殊的元素代替
C.将与该元素有相同Hash地址的后继元素顺次前移一个位置。

D.用与该元素有相同Hash地址的最后插入表中的元素替代。

11. 假定有k个关键字互为同义词,若用线性探测法把这k个关键字存入散列表中,至少要进行多少次探测?( )
A.k-1次 B. k次C. k+1次D. k(k+1)/2次12. 散列表的地址区间为0-17,散列函数为H(K)=K mod 17。

采用线性探测法处理冲突,并将关键字序列26,25,72,38,8,18,59依次存储到散列表中。

(1)元素59存放在散列表中的地址是()。

A. 8 B. 9 C. 10 D. 11(2)存放元素59需要搜索的次数是()。

A. 2 B. 3 C. 4 D. 5
13. 将10个元素散列到100000个单元的哈希
表中,则()产生冲突。

A. 一定会
B. 一定不会
C. 仍可能会
二、判断题
1.查找相同结点的效率折半查找总比顺序查找高。

×
2.对无序表用二分法查找比顺序查找快。

×3.对大小均为n的有序表和无序表分别进行顺序查找,在等概率查找的情况下,对于查找成功,它们的平均查找长度是相同的,而对于查找失败,
它们的平均查找长度是不同的。


4.在查找树(二叉树排序树)中插入一个新结点,总是插入到叶结点下面。

×
5.对一棵二叉排序树按前序方法遍历得出的结
点序列是从小到大的序列。

×
6.二叉树中除叶结点外, 任一结点X,其左子
树根结点的值小于该结点(X)的值;其右子树
根结点的值≥该结点(X)的值,则此二叉树一定
是二叉排序树。

×
7. 在任意一棵非空二叉排序树中,删除某结点
后又将其插入,则所得二排序叉树与原二排序叉
树相同。

×
8.采用线性探测法处理散列时的冲突,当从哈
希表删除一个记录时,不应将这个记录的所在位
置置空,因为这会影响以后的查找。


9.在散列检索中,“比较”操作一般也是不可避免√
10.散列函数越复杂越好,因为这样随机性好,冲突概率小. ×
11.Hash表的平均查找长度与处理冲突的方法
无关。

×
12.负载因子(装填因子)是散列表的一个重要
参数,它反映散列表的装满程度。


13. 若散列表的负载因子α<1,则可避免碰撞的产生。

×
三、填空题
1.顺序查找n个元素的顺序表,若查找成功,则比较关键字的次数最多为__(1)n __次。

2.在有序表A[1..20]中,按二分查找方法进行查找,查找长度为5的元素个数是__ (2)5__。

3.在有序表A[1…20]中,按二分查找方法进行查找,查找长度为4的元素的下标从小到大依次是____(3)1,3,6,8,11,13,16,19__。

4.有序表(12,18,24,35,47,50,62,83,90,115,
134)使用二分法查找90时,需___(4)2_次查找成功,查100时,需___(5)4_次才能确定不成功。

5.在n个记录的有序顺序表中进行折半查找,最大
比较次数是___(6)log2n+1__。

(取下界)
6.平衡因子的定义是___(7)结点的左子树的高度减去结点的右子树的高度___
7.高度为8的平衡二叉树的结点数至少有___(8)54__个。

(参照教材P238:N0=0,N1=1,N2=2,公式
N h=N h-1+N h-2+1)
8. 动态查找表和静态查找表的重要区别在于前者包含有___(9)插入_和__(10)_删除__运算,而后者不包含这两种运算。

四、应用题
1.假定对有序表:(3,4,5,7,24,30,42,54,63,72,87,95)进行折半查找,试回答下列问题:
(1).画出描述折半查找过程的判定树;
(2).若查找元素54,需依次与那些元素比较?
(3).若查找元素90,需依次与那些元素比较?
(4).假定每个元素的查找概率相等,求查找成功时的平均查找长度。

2.一棵二叉排序树结构如下,各结点的值从小到大依次为1-9,请标出各结点的值。

3.依次输入表
(30,15,28,20,24,10,12,68,35,50,46,5
5)中的元素,生成一棵二叉排序树【华中
理工大学 2000 五(10分)】
(1) 试画出生成之后的二叉排序树; (2) 对该二叉排序树作中序遍历,试写出遍历序列;
(3) 假定每个元素的查找概率相等,试计算
该二叉排序树的平均查找长
度。

4.设哈希函数H(k)=3 K mod 11,散列地址空间为0~10,对关键字序列(32,13,49,24,38,21,4,12)按下述两种解决冲突的方法构造哈希表(1)线性探测再散列(2)链地址法,并分别求出等概率下查找成功时的平均查找长度;。

相关文档
最新文档