数据结构(java)复习题及答案

合集下载

数据结构JAVA语言描述习题答案(刘小晶等主编).pdf总复习

数据结构JAVA语言描述习题答案(刘小晶等主编).pdf总复习
设定哈希函数 H(key) = key MOD 11 ( 表长=11 ) 若采用二次探测再散列处理冲突
0 1 2 3 4 5 6 7 8 9 10
55 01 23 14 36 82 68
19
11
3
1 1 2 1 2 1 4 1 ASL(成功)= (1*5+2*1+3+4)/9=14/9
3 V4 4 V5 5 V6
1 5 5 4
4
广度优先搜索法遍历序列: V1,V2,V3,V4,V5,V6
2
3
例题: 设有如下的两个网络, 分别用普里姆(Prim)算法 和克鲁斯卡尔(Kruskal)算法具体构造相应的最小生 成树。 写出过程。 a 5 6 1
b
5 6
c
6
5 4
d
3
2
[例1]假设按低下标优先存储整数数组 A9×3×5×8时, 第一个元素的字节地址是100,每个整数占 四个字节,问元素a3125的地址是什么? LOC(a3125)= ? 100+(3×3×5×8+1×5×8+2×8+5)×4 =1784
[ 例 2] 设有数组 A[1..8,1..10] ,数组的每个元素占 3 字节,数组从内存首地址 BA开始以列序为主序顺 序存放,求数组元素 a[5,8]的存储首地址.
8 9 10
55 01 23 14 68 11 82 36 19
1 1 2 1 3 6 2 5 1 查找次数 ASL(成功)=(4*1+2*2+3+5+6)/9=22/9
ASL(不成功)=(10+9+…+1+1)/11=56/11
例如: 关键字集合 { 19, 01, 23, 14, 55, 68, 11, 82, 36 }

数据结构复习题及答案5篇

数据结构复习题及答案5篇

数据结构复习题及答案5篇第一篇:数据结构复习题及答案、数据结构复习题及答案中南大学现代远程教育课程考试(专科)复习题及参考答案数据结构一、判断题:1.数组是一种复杂的数据结构,数组元素之间的关系既不是线性的也不是树形的。

()2.链式存储在插人和删除时需要保持物理存储空间的顺序分配,不需要保持数据元素之间的逻辑顺序。

()3.在只有度为0和度为k的结点的k叉树中,设度为0的结点有n0个,度为k的结点有nk个,则有n0=nk+1。

()4.折半搜索只适用于有序表,包括有序的顺序表和有序的链表。

()5.如果两个串含有相同的字符,则这两个串相等。

()6.数组可以看成线性结构的一种推广,因此可以对它进行插入、删除等运算。

()7.在用循环单链表表示的链式队列中,可以不设队头指针,仅在链尾设置队尾指针。

()8.通常递归的算法简单、易懂、容易编写,而且执行的效率也高。

()9.一个广义表的表尾总是一个广义表。

()10.当从一个小根堆(最小堆)中删除一个元素时,需要把堆尾元素填补到堆顶位置,然后再按条件把它逐层向下调整,直到调整到合适位置为止。

()11.对于一棵具有n个结点,其高度为h的二叉树,进行任一种次序遍历的时间复杂度为O(h)。

()12.存储图的邻接矩阵中,邻接矩阵的大小不但与图的顶点个数有关,而且与图的边数也有关。

()13.直接选择排序是一种稳定的排序方法。

()14.闭散列法通常比开散列法时间效率更高。

()15.有n个结点的不同的二叉树有n!棵。

()16.直接选择排序是一种不稳定的排序方法。

()17.在2048个互不相同的关键码中选择最小的5个关键码,用堆排序比用锦标赛排序更快。

()18.当3阶B_树中有255个关键码时,其最大高度(包括失败结点层)不超过8。

()19.一棵3阶B_树是平衡的3路搜索树,反之,一棵平衡的3路搜索树是3阶非B_树。

()20.在用散列表存储关键码集合时,可以用双散列法寻找下一个空桶。

数据结构(Java版)_郑州大学中国大学mooc课后章节答案期末考试题库2023年

数据结构(Java版)_郑州大学中国大学mooc课后章节答案期末考试题库2023年

数据结构(Java版)_郑州大学中国大学mooc课后章节答案期末考试题库2023年1.对不含相同元素的同一输入序列进行两组不同的、合法的入栈和出栈组合操作,所得的输出序列一定相同。

参考答案:错误2.在链队列中,即使不设置尾指针,也能进行入队操作。

参考答案:正确3.循环顺序队列和循环链队列都存在空间一处问题。

参考答案:错误4.直接选择排序的时间复杂度与关键字的初始排列无关。

参考答案:正确5.一个循环链表可以由给定的头指针或尾指针来唯一标识。

参考答案:正确6.所谓随机存取,就是通过首地址和元素的序号可以在O(1)的时间内找到指定的元素。

参考答案:正确7.快速排序在最坏情况下的时间复杂度是O(【图片】)。

参考答案:正确8.哈夫曼树是带权路径长度最短的树,路径上权值较大的结点离根较近()参考答案:正确9.在队列中存取数据元素的原则是()。

参考答案:先进先出10.将整数1、2、3、4依次进栈,则不可能得到的出栈序列是()。

参考答案:142311.完全二叉树的存储结构通常采用顺序存储结构()。

参考答案:正确12.在中序线索二叉树中,每一非空的线索均指向其祖先结点()参考答案:正确13.二叉树中序线索化后,不存在空指针域()参考答案:错误14.二叉树的层次遍历需要栈结构的支持。

参考答案:错误15.下列关于AOE网的叙述中,不正确的是()参考答案:任何一个关键活动提前完成,那么整个工程将会提前完成16.一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足()参考答案:只有一个叶子结点17.引入二叉线索树的目的是()参考答案:加快查找结点的前驱或后继的速度18.单源最短路径算法的时间复杂度为()参考答案:O()19.对6个不同的数据元素进行直接插入排序,最多需要进行()次关键字的比较。

参考答案:1520.完全二叉树中,若一个结点没有左孩子,则它必是树叶()。

参考答案:正确21.已知循环队列存储在一维数组A[0【图片】n]中,且队列非空时front和rear分别指向队首元素和队尾元素。

(完整版)数据结构复习题(附答案)

(完整版)数据结构复习题(附答案)

(完整版)数据结构复习题(附答案)⼀、算法设计题(每题15分,共60分)答题要求:①⽤⾃然语⾔说明所采⽤算法的思想;②给出每个算法所需的数据结构定义,并做必要说明;③写出对应的算法程序,并做必要的注释。

1、有⼀个带头结点的单链表,每个结点包括两个域,⼀个是整型域info,另⼀个是指向下⼀个结点的指针域next。

假设单链表已建⽴,设计算法删除单链表中所有重复出现的结点,使得info域相等的结点只保留⼀个。

3、约瑟夫环问题(Josephus问题)是指编号为1、2、…,n的n(n>0)个⼈按顺时针⽅向围坐成⼀圈,现从第s个⼈开始按顺时针⽅向报数,数到第m个⼈出列,然后从出列的下⼀个⼈重新开始报数,数到第m的⼈⼜出列,…,如此重复直到所有的⼈全部出列为⽌。

现要求采⽤循环链表结构设计⼀个算法,模拟此过程。

4、编程实现单链表的就地逆置。

23.在数组 A[1..n]中有n个数据,试建⽴⼀个带有头结点的循环链表,头指针为h,要求链中数据从⼩到⼤排列,重复的数据在链中只保存⼀个.5、设计⼀个尽可能的⾼效算法输出单链表的倒数第K个元素。

3、假设以I和O分别表⽰⼊栈和出栈操作。

栈的初态和终态均为空,⼊栈和出栈的操作序列可表⽰为仅由I和O组成的序列,称可以操作的序列为合法序列,否则称为⾮法序列。

(15分)(1)下⾯所⽰的序列中哪些是合法的?A. IOIIOIOOB. IOOIOIIOC. IIIOIOIOD. IIIOOIOO(2)通过对(1)的分析,写出⼀个算法,判定所给的操作序列是否合法。

若合法,返回true,否则返回false(假定被判定的操作序列已存⼊⼀维数组中)。

5、设从键盘输⼊⼀整数的序列:a1, a2, a3,…,an,试编写算法实现:⽤栈结构存储输⼊的整数,当ai≠-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈。

算法应对异常情况(⼊栈满等)给出相应的信息。

设有⼀个背包可以放⼊的物品重量为S,现有n件物品,重量分别为W1,W2,...,W n。

数据结构(Java版)习题解答

数据结构(Java版)习题解答

AI N D E X练习题答案第一章练习题答案(a) n+(n–1)+(n–2)+…+2+1=2)1(+ n n (b) n+(n–1)+(n–2)+…+2+1=2)1(+nnf(n)≦c.g(n) →f(n)=O(g(n))(a) f(n)=100n+9c=101, g(n)=n, n0=10得知f(n)=O(n)(b) f(n)=1000n2+100n–8c=2000, g(n)= n2, n0=1得知f(n)=O(n2)(c) f(n)=5*2n+9 n2+2c=10, n0=5得知f(n)=O(2n)f(n)≧c g(n) →f(n)=Ω(g(n)) (a) f(n)=3n+1c=2, n0=1, g(n)=n得知f(n)=Ω(n)(b) f(n)=100n2+4n+5c=10, n0=1, g(n)= n2得知f(n)=Ω(n2)(c) f(n)=8*2n+8n+16c=8, n0=1, g(n)= 2n得知f(n)=Ω(n2)c1.g(n)≦f(n)≦c2.g(n) →f(n)= Θ(g(n))(a) f(n)=3n+2c1=3, c2=6, n0=1得知f(n) = Θ (n)(b) f(n)=9n2+4n+2c1=9, c2=16, n0=1得知f(n) = Θ (n2)(c) f(n)=8n4+5n3+5c1=8, c2=20, n0=1得知f(n) = Θ (n4)A-2练习题解答第二章练习题答案1. 分别以行为主和以列为主说明之。

(a) 以行为主A(i, j)=l0+(i–1)*u2*d+(j–1)*d(b) 以列为主A(i, j)=l0+(j–1)*u1*d+(i–1)*d2. 以列为主A(i, j)=l0+(j–12)*md+(i–l1)dm=u1–l1+1=5–(–3)+1=9m=u2–l2+1=2–(–4)+1=7A(1, 1) =100+(1–(–4))*9+(1–(–3))=100+45+4=1493. 分别以行为主和以列为主的说明。

数据结构总复习题(JAVA)

数据结构总复习题(JAVA)

一、填空题1. 栈和队列的共同特点是(只允许在端点处插入和删除元素)。

2. 在深度为5的满二叉树中,叶子结点的个数为(31)3. 算法分析的目的是(分析算法的效率以求改进)。

4. 由两个栈共享一个存储空间的好处是(节省存储空间,降低上溢发生的机率)。

5.串的长度是(串中所含字符的个数)。

6.设有两个串p和q,求q在p中首次出现位置的运算称做(模式匹配)7. N个顶点的连通图中边的条数至少为(N-1)。

8.N个顶点的强连通图的边数至少有(N)。

9.对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为(N)。

P25910.假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为(n(n-1)/2)。

P29211. 在n个结点的单链表中要删除已知结点*p,需找到它的前驱结点的地址,其时间复杂度为O(n)。

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

13. 有向图G用邻接表矩阵存储,其第i行的所有元素之和等于顶点i的出度。

14. 用Dijkstra算法求某一顶点到其余各顶点间的最短路径是按路径长度递增的次序来得到最短路径的。

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

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

17.在顺序表中插入或删除一个元素,需要平均移动表中一半元素,具体移动的元素个数与表长和该元素在表中的位置有关。

18. 线性表中结点的集合是有限的,结点间的关系是一对一的。

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

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

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

22. 在顺序表中访问任意一结点的时间复杂度均为 O(1) ,因此,顺序表也称为随机存取的数据结构。

23. 在n个结点的单链表中要删除已知结点*p,需找到它的前驱结点的地址,其时间复杂度为O(n)。

数据结构(java)复习题及答案

数据结构(java)复习题及答案

数据结构(java)复习题及答案⼀、选择题1、数据结构在计算机内存中的表⽰是指____A__A.数据的存储结构 B.数据结构C. 数据的逻辑结构D.数据元素之间的关系2、若⼀个算法的时间复杂度⽤T(n)表⽰,其中n的含义是( A )A.问题规模 B.语句条数C.循环层数 D.函数数量3、下列选项中与数据存储结构⽆关的术语是( D )A.顺序表B.链表C.链队列D.栈4、已知循环队列的存储空间⼤⼩为m,队头指针front指向队头元素,队尾指针rear指向队尾元素的下⼀个位置,则向队列中插⼊新元素时,修改指针的操作是( D )A.rear=(rear-1)%m;B.front=(front+1)%m;C.front=(front-1)%m;D.rear=(rear+1)%m;5、栈和队列的共同点是__C______A.都是先进后出B.都是先进先出C.只允许在端点处插⼊和删除元素D.没有共同点6、已知⼀堆栈的进栈序列为1234,则下列哪个序列为不可能的出栈序列______D__A.1234B.4321C.2143D.41237、具有线性结构的数据结构是( C )A.树 B.图C.栈和队列 D.⼴义表8、假设以数组A[60]存放循环队列的元素,其头指针是front=47,当前队列有50个元素,则队列的尾指针值为( B )A.3 B.37C.50 D.979、若栈采⽤链式存储结构,则下列说法中正确的是( B )A.需要判断栈满且需要判断栈空B.不需要判断栈满但需要判断栈空C.需要判断栈满但不需要判断栈空D.不需要判断栈满也不需要判断栈空10、若⼀棵具有n(n>0)个结点的⼆叉树的先序序列与后序序列正好相反,则该⼆叉树⼀定是( C )A.结点均⽆左孩⼦的⼆叉树B.结点均⽆右孩⼦的⼆叉树C.⾼度为n的⼆叉树D.存在度为2的结点的⼆叉树11、若⼀棵⼆叉树中度为l的结点个数是3,度为2的结点个数是4,则该⼆叉树叶⼦结点的个数是( B )A.4B.5C.7D.812、在n个结点的线索⼆叉树中,线索的数⽬为_C_______A.n-1 B. nC.n+1D.2n13、⼀棵完全⼆叉树有1001个结点,其中有____B_____叶⼦结点A.500B.501C.503D.50515、⼀个有n个顶点的⽆向图最多有___C____条边。

数据结构(Java)复习题及答案 3栈和队列

数据结构(Java)复习题及答案 3栈和队列

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

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

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

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

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

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

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

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

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

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

错,线性表是逻辑结构概念,可以顺序存储或链式存储,与元素数据类型无关。

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

错,不一定吧?调用子程序或函数常用,CPU中也用队列。

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

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

正确,都是线性逻辑结构,栈和队列其实是特殊的线性表,对运算的定义略有不同而已。

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

错,栈是逻辑结构的概念,是特殊殊线性表,而链表是存储结构概念,二者不是同类项。

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

错,他们都是线性逻辑结构,栈和队列其实是特殊的线性表,对运算的定义略有不同而已。

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

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

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

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

一、选择题
1、数据结构在计算机内存中的表示是指____A__
A.数据的存储结构 B.数据结构
C. 数据的逻辑结构
D.数据元素之间的关系
2、若一个算法的时间复杂度用T(n)表示,其中n的含义是( A )A.问题规模 B.语句条数
C.循环层数 D.函数数量
3、下列选项中与数据存储结构无关的术语是( D )
A.顺序表
B.链表
C.链队列
D.栈
4、已知循环队列的存储空间大小为m,队头指针front指向队头元素,队尾指针rear指向队尾元素的下一个位置,则向队列中插入新元素时,修改指针的操作是( D )
=(rear-1)%m; =(front+1)%m; =(front-1)%m; =(rear+1)%m;
5、栈和队列的共同点是__C______
A.都是先进后出
B.都是先进先出
C.只允许在端点处插入和删除元素
D.没有共同点
6、已知一堆栈的进栈序列为1234,则下列哪个序列为不可能的出栈序列______D__
7、具有线性结构的数据结构是( C )
A.树 B.图
C.栈和队列 D.广义表
8、假设以数组A[60]存放循环队列的元素,其头指针是front=47,当前队列有50个元素,则队列的尾指针值为( B )
A.3 B.37
C.50 D.97
9、若栈采用链式存储结构,则下列说法中正确的是( B )
A.需要判断栈满且需要判断栈空
B.不需要判断栈满但需要判断栈空
C.需要判断栈满但不需要判断栈空
D.不需要判断栈满也不需要判断栈空
10、若一棵具有n(n>0)个结点的二叉树的先序序列与后序序列正好相反,则该二叉树一定是( C )
A.结点均无左孩子的二叉树
B.结点均无右孩子的二叉树
C.高度为n的二叉树
D.存在度为2的结点的二叉树
11、若一棵二叉树中度为l的结点个数是3,度为2的结点个数是4,则该二叉树叶子结点的个数是( B )
12、在n个结点的线索二叉树中,线索的数目为_C_______
A.n-1 B. n
+1
13、一棵完全二叉树有1001个结点,其中有____B_____叶子结点
15、一个有n个顶点的无向图最多有___C____条边。

A. n
B. n(n-1)
C. n(n-1)/2
D. 2n
16、以v1为起始结点对下图进行深度优先遍历,正确的遍历序列是( D )
A.v1,v2,v3,v4,v5,v6,v7 B.v1,v2,v5,v4,v3,v7,v6 C.v1,v2,v3,v4,v7,v5,v6 D.v1,v2,v5,v6,v7,v3,v4
二、填空题
1、一个算法具有5个特性:__有穷性_____、__可行性____、确定性、输入和输出
4、队列的存储方式有__顺序队列__________和 ____链式队列_______。

5、递归过程或函数调用时,处理参数及返回地址,需要一种称为__栈_____的数据结构。

7、在单链表中某结点后插入一个新结点,需要修改___2____________个
结点指针域的值。

8、设栈S的初始状态为空,若元素a、b、c、d、e、f依次进栈,得到的
出栈序列是b、d、c、f、e、a,则栈S的容量至少是_____3___________。

10、设一个顺序循环队列容量为60,当front=47,rear=23时,该队列有______36____个元素。

11、已知二维数组a[10][8]采用行主序存储,数组首地址是1000,每个元素占用4字节,则数组元素a[4][5]的存储地址是____________1176______________。

12、已知一棵完全二叉树的根(第0个)结点层次为1,则第100个结点的层次为_____7___。

12、中根遍历序列和后根遍历序列相反的二叉树是_______________结构均无左孩子的二叉树____________________。

13、由256个权值构造一棵哈夫曼树,则该二叉树共有___256+255_______结点。

14、用6个权值分别为6、13、18、30、7和16的结点构造一棵哈夫曼(Huffman)树,该树的带权路径长度为_____219____。

15、深度为5的二叉树至多有___2^5-1___个结点。

17、一个有n 个顶点的无向连通图,最少有______n-1__________条边。

18、交换排序法是对序列中的元素进行一系列比较,当被比较的两元素逆序时,进行交换。

______和_____是基于这类方法的两种排序方法。

19、在长度为n 的顺序表L 中查找指定元素值的元素,其时间复杂度为__________
有一个有序表为{1,3,9,12,32,41,45,62,75,77,82,95,99},当采用二分查找法查找关键字为82的元素时,_______次比较后查找成功。

20、设用希尔排序对{98,36,-9,0,47,23,1,8,10,7}进行排序,给出的步长(也称增量序列)为5,则第一趟排序后的结果是__________________________________________。

三、应用题
1、将下列稀疏矩阵的非零元素表示成三元组的形式。

2、画出下列广义表的双链表示:
中国(北京,上海,江苏(南京,苏州),浙江(杭州),广东(广州))
3、已知一棵二叉树的中根和后根遍历序列如下,画出据此构造的二叉树。

中根遍历序列:D B H E I A F K C G
后根遍历序列:D H I E B K F G C A
4.已知一棵二叉排序树(结点值大小按字母顺序)的前序遍历序列为EBACDFHG ,
请回答下列问题:
⎥⎥⎥⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎢⎢⎢⎣⎡---=0200000000000210010070003A
(1)画出此二叉排序树;
(2)若将此二叉排序树看作森林的二叉链表存储,请画出对应的森林
5、已知有向图的邻接表如图所示,请回答下面问题:
(1)给出该图的邻接矩阵;
(2)从结点A出发,写出该图的深度优先遍历序列。

6、设用于通信的电文仅由5个字母{A,B,C,D,E}组成,字母在电文中出现的次数分别是2,4,5,7,8。

为这五个字母设计哈夫曼编码。

7、
(1)分别以prim、kruscal 算法构造下图的最小生成树。

(2)Dijkstra算法求下图中顶点1到其他所有顶点的最短路径及长度。

四、程序阅读题
1、顺序循环队列中,出队方法如下,请补全空出的部分。

Public E dequeue(){
If(!isEmpty()){
E temp = (E) [];
=___ +1)% ()________________;
return _______temp____;
}
return null;
}
2、以下是顺序栈类的声明,其中成员变量Value 数组存储栈的数据元素,top表示当前栈顶元素的下标,请补充以下空白。

import class SeqStack<E> implements SStack <E> {
private Object value[];
private int top;
public SeqStack(int capacity) {
=new Object[(capacity)];
=-1;
}
public SeqStack()
{this(10);
}
public boolean isEmpty(){ //判断栈是否为空,若空栈返回true
return == -1________;
}
public boolean push(E element){ //元素element 入栈,若操作成功返回true
if(element==null)
return __false_______;
if=={
Object[] temp =;
=new Object[*2];
for(int i=0;i<;i++)
[i]=temp[i];}
++_______;
[]=___element________; return ___true_____; }}。

相关文档
最新文档