数据结构(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. 队是一种插入与删除操作分别在表的两端进行的线性表,是一种先进后出型结构。

数据结构教程(Java)习题解答

数据结构教程(Java)习题解答

第一章 绪论1.1 单选题1. D2. C3. D4. B5. A6. B7. C8. C9. A 10. B第10小题提示:在含有n 个元素的数据表中顺序查找任一元素的平均比较次数为p c i i i n=∑1,p i为查找第i 个元素的概率,c i是查找第i 个元素时需要比较的元素数,查找所有元素的概率之和为1,若查找每个元素的概率相同,则平均查找长度的计算公式可简化为11ni i nc =∑。

此题的计算式为)76543(121241131+++++⨯+⨯=35/121.2 算法分析题 1. 判断n 是否为一个素数,若是则返回逻辑值true ,否则返回逻辑值false 。

该算法的时间复杂度为O (n )。

2. 计算∑=ni i 1!的值。

时间复杂度为O (n )。

3. 计算∑=n i i 1!的值。

时间复杂度为O (n 2)。

4. 求出满足不等式1+2+3+...+i ≥n 的最小i 值。

时间复杂度为O (n )。

提示:因为1+2+3+...+i=(1+i)i/2,即当n 很大时i 的平方与n 成正比,所以i 的值(即函数中while 循环的次数)与n 的平方根成正比。

5. 打印出一个具有n 行的乘法表,第i 行(1≤i ≤n )中有n-i+1个乘法项,每个乘法项为i 与j (i ≤j ≤n )的乘积。

时间复杂度为O (n 2)。

6. 统计并返回二维数组a 中大于等于k 的元素的个数。

时间复杂度为O (m ×n),假定m 和n 分别表示二维数组a 的行数和列数。

7. 矩阵相乘,即a[m][n]×b[n][p]→c[m][p]。

时间复杂度为O (M ×N ×P)。

这里假定二维数组a 的行列数为m 和n ,二维数组b 的行列数为n 和p ,二维数组c 的行列数为m 和p 。

1.3 算法设计题设计二次多项式ax 2+bx+c 的一种抽象数据类型,假定起名为Quadratic ,该类型的数据部分为双精度类型的3个系数项a 、b 和c ,操作部分为: (1) 初始化二次多项式中的三个数据成员a 、b 和c 。

数据结构Java版复习题解答

数据结构Java版复习题解答

第0章 Java程序设计基础 (1)【习0.1】实验0.1 哥德巴赫猜想。

(1)【习0.2】实验0.2 杨辉三角形。

(1)【习0.3】实验0.3 金额的中文大写形式。

(1)【习0.4】实验0.4 下标和相等的数字方阵。

(1)【习0.5】实验0.5 找出一个二维数组的鞍点 (2)【习0.6】实验0.6 复数类。

(2)【习0.7】实验0.8 图形接口与实现图形接口的类 (2)第1章绪论 (3)【习1.1】实验1.1 判断数组元素是否已按升序排序。

(3)【习1.2】实验1.3 用递归算法求两个整数的最大公因数。

(3)第2章线性表 (5)【习2.1】习2-5 图2.19的数据结构声明。

(5)【习2.2】习2-6 如果在遍历单链表时,将p=p.next语句写成p.next=p,结果会怎样? .. 5【习2.3】实验2.2 由指定数组中的多个对象构造单链表。

(5)【习2.4】实验2.2 单链表的查找、包含、删除操作详见8.2.1。

(5)【习2.5】实验2.2 单链表的替换操作。

(6)【习2.6】实验2.2 首尾相接地连接两条单链表。

(6)【习2.7】实验2.2 复制单链表。

(7)【习2.8】实验2.2 单链表构造、复制、比较等操作的递归方法。

(7)【习2.9】建立按升序排序的单链表(不带头结点)。

(9)【习2.10】实验2.6 带头结点的循环双链表类,实现线性表接口。

(10)【习2.11】实验2.5 建立按升序排序的循环双链表。

(14)第3章栈和队列 (17)【习3.1】习3-5 栈和队列有何异同? (17)【习3.2】能否将栈声明为继承线性表,入栈方法是add(0,e),出栈方法是remove(0)?为什么? (17)【习3.3】能否用一个线性表作为栈的成员变量,入栈方法是add(0,e),出栈方法是remove(0)?为什么? (17)【习3.4】能否将队列声明为继承线性表,入队方法是add(e),出队方法是remove(0)?为什么? (17)第4章串 (18)【习4.1】实验4.6 找出两个字符串中所有共同的字符。

数据结构Java版习题解答

数据结构Java版习题解答
return binarySearch(table, value, low, mid-1);//查找范围缩小到前半段
else
return binarySearch(table, value, mid+1, high);//查找范围缩小到后半段
}
return -1;
}
【习2.5】二叉排序树查找的递归算法。
数据结构Java版习题解答
第1章
【习1.1】实验哥德巴赫猜想。
【习1.2】实验杨辉三角形。
【习1.3】实验金额的中文大写形式。
【习1.4】实验下标和相等的数字方阵。
输出下列方阵(当n=4时)。
1267或13410
3581325911
491214681215
101115167131416
采用二维数组实现。二维数组中,每一条斜线上各元素下标和相等,如图所示。
图1.2下标和相等的数字方阵算法描述
程序如下。
public class Upmat
{
public static void main(String args[])
{
表1.1int n=4;ength; j++)8.2.18.2.1
ength, ;
for (int j=0; j<[i].length; j++)
[j][i]=[i][j];
return trans;
}
第2章
【习2.1】画出3个结点的各种形态的树和二叉树。
3个结点的树有2种形态,3个结点的二叉树有5种形态,如图所示。
图2.23个结点树和二叉树的形态
【习2.1】找出分别满足下面条件的所有二叉树。
1先根遍历序列和中根遍历序列相同:右单支二叉树,如图(a)所示。

《数据结构(Java语言版)》试卷1

《数据结构(Java语言版)》试卷1

长沙民政学院2015年上学期期末考试卷(A卷)考试科目:《数据结构》考试形式:闭卷适应班级:软开 1431-1439一、单项选择(共20题,每题2分, 共40分)1、以下数据结构中哪一个是非线性结构?()A. 队列B. 栈C.二叉树D. 线性表2、()不是算法的主要特性。

A.输入性 B.输出性 C.有穷性 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、若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为( )A.i B.n=i C.n-i+1 D.不确定9、若依次输入数据元素序列{a,b,c,d,e,f,g}进栈,出栈操作可以和入栈操作间隔进行,则下列哪个元素序列可以由出栈序列得到?( )A.{ c,d,b,e,g,a,f} B.{ f,e,g,d,a,c,b}C.{e,f,d,g,b,c,a} D.{d,e,c,f,b,g,a}10、一个栈的入栈序列是1,2,3,4,5,则下列序列中不可能的出栈序列是( )A.2,3,4,1,5 B.2,3,1,4,5C.5,4,1,3,2 D.1,5,4,3,211、判断一个循环队列( m0为最大队列长度(以元素为单位),front和rear分别为队列的队头指针和队尾指针) 为空队列的条件是( )。

java数据结构测试题及答案解析

java数据结构测试题及答案解析

1 下列数据结构中,能用二分法进行查找的是__A____。

A、顺序存储的有序线性表B、线性链表C、二叉链表D、有序线性链表解析:二分法查找只合用于顺序存储的有序表。

在此所说的有序表是指线性表中的元素按值非递减罗列(即从小到大,但允许相邻元素值相等)。

2 在软件设计中,不属于过程设计工具的是__D____。

A、PDL(过程设计语言)B、PAD 图C、N-S 图D、DFD 图解析:软件设计工具包括:程序流程图、 N-S、PAD、HIPO,判定表, PDL(伪码)。

而 DFD(数据流图)属于结构化分析工具。

3 在 switch(expression)语句中, expression 的数据类型不能是__A____。

A、doubleB、charC、byteD、short解析:表达式expression 只能返回这个几种类型的值: int、byte、short 和 char。

多分支语句把表达式返回的值挨次与每一个 case 子句中的值相比较,如果遇到匹配的值,则执行该 case 子句后的语句序列。

4 下列叙述中,错误的是__D____。

A、父类不能替代子类B、子类能够替代父类C、子类继承父类D、父类包含子类5 通过继承实现代码复用:Java 中所有的类都是通过直接或者间接地继承 ng.Object 类得到的。

继承而得到的类称为子类,被继承的类称为父类。

子类不能继承父类中访问权限为 private 的成员变量和方法,子类可以重写父类的方法,及命名与父类同名的成员变量。

子类通过隐藏父类的成员变量和重写父类的方法,把父类的状态和行为改变为自身的状态和行为。

注意:子类中重写的方法和父类中被重写的方法要具有相同的名字,相同的参数表和相同的返回类型,只是函数体不同。

由于子类继承了父类所有的属性(私有的除外),所以子类对象可以作为父类对象使用。

程序中凡是使用父类对象的地方,都可以用子类对象来代替。

一个对象可以通过引用子类的实例来调用子类的方法。

java数据结构期末考试题及答案

java数据结构期末考试题及答案

java数据结构期末考试题及答案一、选择题(每题2分,共20分)1. 在Java中,以下哪个类是`java.util`包的一部分?A. ArrayListB. HashMapC. LinkedListD. All of the above答案:D2. 下列哪个方法用于将元素添加到ArrayList的末尾?A. add()B. append()C. push()D. insert()答案:A3. 在Java中,HashMap的键值对映射关系是什么?A. 一对一B. 一对多C. 多对一D. 多对多答案:A4. 下列哪个类是Java集合框架中的接口?A. LinkedListB. HashSetC. ArrayListD. Collection答案:D5. Java中,哪个方法用于删除ArrayList中的指定元素?A. remove()B. delete()C. erase()D. clear()答案:A6. 下列哪个类实现了Queue接口?A. PriorityQueueB. LinkedListC. HashSetD. TreeSet答案:B7. Java中,哪个方法用于判断HashMap是否包含指定的键?A. containsKey()B. containsValue()C. contains()D. hasKey()答案:A8. 下列哪个方法用于获取ArrayList的当前大小?A. size()B. length()C. count()D. lengthOf()答案:A9. 在Java中,哪个类实现了Set接口?A. ArrayListB. LinkedListC. HashSetD. HashMap答案:C10. 下列哪个方法用于将元素插入到ArrayList的指定位置?A. add()B. insert()C. put()D. set()答案:A二、填空题(每题2分,共20分)1. 在Java中,使用________方法可以创建一个ArrayList实例。

数据结构java复习题

数据结构java复习题

数据结构java复习题# 数据结构Java复习题## 1. 基本概念### 1.1 什么是数据结构?数据结构是计算机科学中存储、组织数据的方式,它包括数据的逻辑结构和物理结构。

### 1.2 常见的数据结构有哪些?常见的数据结构包括数组、链表、栈、队列、树、图等。

## 2. 数组### 2.1 数组的特点是什么?数组是一种线性数据结构,它支持通过索引快速访问元素。

### 2.2 如何在Java中实现数组?在Java中,数组可以通过声明类型和大小来实现,例如:`int[] numbers = new int[10];`## 3. 链表### 3.1 链表的基本操作有哪些?链表的基本操作包括插入、删除、查找等。

### 3.2 单链表和双链表的区别是什么?单链表中的每个节点只包含数据和指向下一个节点的指针,而双链表的节点还包含指向前一个节点的指针。

## 4. 栈### 4.1 栈的基本原则是什么?栈遵循后进先出(LIFO)原则。

### 4.2 Java中如何实现栈?Java提供了`Stack`类,但更推荐使用`ArrayDeque`实现栈的功能。

## 5. 队列### 5.1 队列的基本原则是什么?队列遵循先进先出(FIFO)原则。

### 5.2 Java中如何实现队列?Java提供了`Queue`接口和多种实现类,如`LinkedList`、`ArrayDeque`等。

## 6. 树### 6.1 什么是二叉树?二叉树是一种特殊的树,其中每个节点最多有两个子节点。

### 6.2 什么是二叉搜索树?二叉搜索树是一种特殊的二叉树,其中每个节点的左子树只包含小于该节点的值,右子树只包含大于该节点的值。

## 7. 图### 7.1 图的表示方法有哪些?图可以用邻接矩阵或邻接表来表示。

### 7.2 什么是深度优先搜索(DFS)和广度优先搜索(BFS)?DFS是一种遍历图的方法,它从图中的一个顶点开始,沿着一条路径到达不能再继续为止,然后回溯到上一个顶点,继续遍历。

java数据结构测试题及答案解析

java数据结构测试题及答案解析

java数据结构测试题及答案解析```markdownJava数据结构测试题及答案解析第一章:数组概述数组是一种线性数据结构,用于存储多个相同数据类型的元素。

本章将介绍数组的基本概念和操作。

1.定义数组在Java中,可以使用以下语法定义一个数组:```java<数据类型>[] <数组名> = new <数据类型>[<数组长度>];```2.访问数组元素可以使用索引值来访问数组中的元素,索引值从0开始。

例如,要访问数组中的第一个元素,可以使用以下语法:```java<数组名>[0];```3.数组的常见操作本节将详细介绍数组的常见操作,包括添加元素、删除元素、查找元素等。

3.1 添加元素可以使用以下语法向数组中添加元素:```java<数组名>[<索引值>] = <新元素>;```3.2 删除元素使用以下语法删除数组中的元素:```java<数组名>[<索引值>] = null;```3.3 查找元素可以使用循环语句遍历数组,并通过判断元素的值来查找指定元素。

第二章:链表概述链表是一种常见的数据结构,用于存储多个元素。

本章将介绍链表的基本概念和操作。

1.定义链表在Java中,可以使用以下代码定义一个链表节点:```javaclass ListNode {int val;ListNode next;ListNode(int x) { val = x; }}```2.链表的插入和删除本节将介绍链表的插入和删除操作,包括在链表头插入、在链表尾插入、在指定位置插入等。

2.1 在链表头插入使用以下代码在链表头部插入一个节点:```javaListNode newNode = new ListNode(val); newNode.next = head;head = newNode;```2.2 在链表尾插入使用以下代码在链表尾部插入一个节点:```javaListNode newNode = new ListNode(val); if (head == null) {head = newNode;} else {ListNode curr = head;while (curr.next != null) {curr = curr.next;}curr.next = newNode;}```2.3 删除节点使用以下代码删除链表中的一个节点:```javaListNode prev = null;ListNode curr = head;while (curr != null) {if (curr.val == val) {if (prev == null) {head = curr.next;} else {prev.next = curr.next; }break;}prev = curr;curr = curr.next;}```3.链表的常见操作本节将介绍链表的常见操作,包括查找节点、链表反转等。

数据结构(Java)复习题及答案 1绪论

数据结构(Java)复习题及答案 1绪论

一、单项选择题( B )1. 计算机算法必须具备输入、输出和 等5个特性。

A) 可行性、可移植性和可扩充性 B) 可行性、确定性和有穷性C) 确定性、有穷性和稳定性 D) 易读性、稳定性和安全性( C )2. 数据结构中,与所使用的计算机无关的是数据的 结构;A) 存储 B) 物理 C) 逻辑 D) 物理和存储( C )3. 算法分析的目的是:A) 找出数据结构的合理性 B) 研究算法中的输入和输出的关系C) 分析算法的效率以求改进 D) 分析算法的易懂性和文档性( A )4. 算法分析的两个主要方面是:A) 空间复杂性和时间复杂性 B) 正确性和简明性C) 可读性和文档性 D) 数据复杂性和程序复杂性( C )5. 计算机算法指的是:A) 计算方法 B) 排序方法 C) 解决问题的有限运算序列 D) 调度方法6.数据结构是研究数据的(A)和(B)以及它们之间的相互关系,并对这种结构定义相应的 (C),设计出相应的(D),从而确保经过这些运算后所得到的新结构是(E)结构类型。

供选择的答案A.B: 1.理想结构 2.抽象结构 3.物理结构 4逻辑结构C.D.E: 1.运算 2.算法 3.结构 4.规则 5.现在的 6.原来的解答:341267.(A)是描述客观事物的数、字符以及所有能输入到计算机中被计算机程序加工处理的符号的结合。

(B)是数据的基本单位,即数据结合中的个体。

有时一个(B)由若干个 (C)组成,在这种情况下,称(B)为记录。

(C)是数据的最小单位。

(D)是具有相同特性的数据元素的集合。

(E)是带有结构特性的数据元素的结合。

被计算机加工的数据元素不是孤立无关的,它们彼此之间一般存在着某种联系,通常将数据元素的这种联系关系称为 (G)。

算法的计算量和问题规模的联系用(H)表示。

供选择的答案:A-F: 1.数据元素 2.符号 3.记录 4.文件 5.数据 6.数据项 7.数据对象 8.关键字 9.数据结构G: 1.规则 2.集合 3.结构 4.运算H: 1.现实性 2.难度 3.复杂性 4.效率解答:5167933二、判断题1, 数据元素是数据的最小单位。

数据结构(Java)复习题及答案2线性表

数据结构(Java)复习题及答案2线性表

第2章线性表一、填空1.在顺序表中插入或删除一个元素,需要平均移动一半的元素,具体移动的元素个数与插入位置有关。

2.向一个长度为n的向量的第i个元素(K i< n+1)之前插入一个元素时,需向后移动n-i+1 个元素。

3.向一个长度为n的向量中删除第i个元素(K i< n)时,需向前移动n-i 个元素。

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

5.顺序表中逻辑上相邻的元素的物理位置也相邻。

单链表中逻辑上相邻的元素的物理位置不一定相邻。

6.在单链表中,除了首元结点外,任一结点的存储位置由前驱节点的引用域指示。

7.在n个结点的单链表中要删除已知结点*p,需找到它的存储位置,其时间复杂度为0 (n) ______ 。

8 .链表中逻辑上相邻的元素的物理位置环一定—相连。

⑵ 在单链表中除首结点外,任意结点的存储位置都由前驱结点中的引用指示。

(3)在单链表中,设置头结点的作用是在插入或删除首结点时不必对头指针―进行处理二、判断正误V X(V) 1.链表的每个结点中都包含一个引用域。

(X ) 2.链表的物理存储结构具有同链表一样的顺序。

(X ) 3.链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动将后续各个单元向前移动。

(X ) 4.顺序表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。

X ) 5.顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。

(X ) 6.顺序存储方式的优点是存储密度大,且插入、删除运算效率高。

X ) 7.线性表在物理存储空间中也一定是连续的。

(V ) 8.线性表在顺序存储时,逻辑上相邻的元素在存储的物理位置次序上相邻。

(X ) 9.顺序存储方式只能用于存储线性结构。

X ) 10.线性表的逻辑顺序与存储顺序总是一致的。

(V ) 11.顺序存储的线性表的插入和删除操作需要付出很大的代价,因为平均每次操作有近一半的元素需要移动。

java数据结构期末考试题及答案

java数据结构期末考试题及答案

java数据结构期末考试题及答案一、选择题(每题2分,共20分)1. 在Java中,以下哪个类是实现了List接口的?A. ArrayListB. LinkedListC. HashSetD. TreeMap答案:A、B2. 以下哪个方法用于在ArrayList中添加元素?A. add(E e)B. put(E key, V value)C. insert(int index, E element)D. append(E element)答案:A3. 在Java中,哪个类实现了Map接口?A. ArrayListB. HashMapC. HashSetD. LinkedList答案:B4. 以下哪个排序算法的时间复杂度为O(nlogn)?A. 冒泡排序B. 快速排序C. 选择排序D. 插入排序答案:B5. 在Java中,哪个类提供了优先队列的功能?A. PriorityQueueB. LinkedListC. StackD. TreeSet答案:A6. 在Java中,以下哪个方法用于删除LinkedList中的元素?A. remove(Object o)B. poll()C. pop()D. dequeue()答案:A、B7. 在Java中,以下哪个类实现了Set接口?A. ArrayListB. HashSetC. HashMapD. LinkedList答案:B8. 在Java中,哪个类提供了栈的功能?A. StackB. LinkedListC. PriorityQueueD. TreeSet答案:A9. 在Java中,以下哪个方法用于在HashMap中添加键值对?A. add(K key, V value)B. put(K key, V value)C. insert(K key, V value)D. append(K key, V value)答案:B10. 在Java中,以下哪个类实现了SortedSet接口?A. TreeSetB. HashSetC. LinkedHashSetD. ArrayList答案:A二、填空题(每题2分,共20分)1. 在Java中,______类实现了List接口,允许对元素进行索引访问。

  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_____; }}。

相关文档
最新文档