数据结构练习
数据结构练习题
. . . . .一、单选题第1章绪论1、在数据结构中,从逻辑上可以把数据结构分成A、动态结构和静态结构C、线性结构和非线性结构2、算法分析的两个主要方面是A、空间复杂性和时间复杂性C、可读性和文档性3、数据的不可分割的最小单位是B、紧凑结构和非紧凑结构D、内部结构和外部结构B、正确性和简明性D、数据复杂性和程序复杂性A、结点B、数据元素C、数据项D、数据对象4、在任何问题中,数据元素都不是孤立存在的,而是在它们之间存在着某种关系,这种数据元素相互之间的关系称为A、规则B、集合C、结构D、运算5、与程序运行时间有关的因素主要有以下四方面,其中与算法关系密切的是A、问题的规模C、机器执行速度二、判断题1、数据结构是带有结构的数据元素的集合。
2、程序越短,运行的时间就越少。
3、处理同一问题的算法是唯一的。
B、机器代码质量的优劣D、语句的执行次数4、一个完整算法可以没有输入,但必须有输出。
三、填空题1、______________是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
2、______________结构的数据元素之间存在一对多的关系。
3、数据结构的形式化定义为(D,S),其中D 是______________的有限集,S 是 D 上关系的有限集。
4、数据结构在计算机中的______________称为存储结构。
5、数据元素之间的关系在计算机中有两种不同的表示方法:顺序映象和非顺序映象,由此- 1 -得到两种不同的存储结构是______________存储结构和______________存储结构。
6、一个算法具有五个特性:______________、______________、______________、有零个或多个输入、有一个或多个输出。
7、评价一个算法的好坏应该从算法的正确性、可读性、___________和_________________等几方面进行。
四、解答题1、设n 为正整数。
《数据结构》综合练习
综合练习一、单项选择题1.数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为(C ).A.存储结构B。
逻辑结构C.链式存储结构D。
顺序存储结构2.设语句x++的时间是单位时间,则以下语句的时间复杂度为( B ).for(i=1; i<=n; i++)for(j=i;j〈=n;j++)x++;A。
O(1) B.O(2n)C。
O(n) D.O(3n)3.链式存储结构的最大优点是( D )。
A。
便于随机存取B。
存储密度高C.无需预分配空间D.便于进行插入和删除操作4.假设在顺序表{a0,a1,……,a n-1}中,每一个数据元素所占的存储单元的数目为4,且第0个数据元素的存储地址为100,则第7个数据元素的存储地址是( D ).A。
106 B. 107 C。
124 D.1285.在线性表中若经常要存取第i个数据元素及其前趋,则宜采用( A )存储方式.A.顺序表B. 带头结点的单链表C。
不带头结点的单链表 D. 循环单链表6.在链表中若经常要删除表中最后一个结点或在最后一个结点之后插入一个新结点,则宜采用( C )存储方式。
A.顺序表B。
用头指针标识的循环单链表C。
用尾指针标识的循环单链表D。
双向链表7.在一个含有n个结点的有序单链表中插入一个新结点,使单链表仍然保持有序的算法的时间复杂度是( C )。
O(1) B。
O(log2n) C。
O(n) D。
O(n2)8.要将一个顺序表{a0,a1,……,a n—1}中第i个数据元素a i(0≤i≤n—1)删除,需要移动( B )个数据元素。
A.i B。
n—i-1 C. n-i D. n—i+19.在栈中存取数据的原则是( B )。
A。
先进先出 B。
先进后出C。
后进后出 D。
没有限制10.若将整数1、2、3、4依次进栈,则不可能得到的出栈序列是( D )。
A.1234 B. 1324 C. 4321 D. 142311.在链栈中,进行出栈操作时(B )。
数据结构试题集(包含答案-完整版)
数据结构试题集(包含答案-完整版)数据结构试题集(包含答案-完整版)1. 单选题1) 数据结构是一种()。
a) 存储结构b) 算法c) 数据模型d) 网络答案:c) 数据模型解析:数据结构是一种用于组织和存储数据的方式,描述了数据之间的关系以及对数据的操作。
2) 以下哪种数据结构可以通过索引直接访问元素?a) 链表b) 队列c) 栈d) 数组答案:d) 数组解析:数组是一种线性数据结构,可以通过索引直接访问指定位置的元素。
2. 多选题1) 哪些数据结构属于非线性结构?()a) 队列b) 树c) 栈d) 图答案:b) 树d) 图解析:线性结构中的元素存在一对一的关系,非线性结构中的元素存在一对多或多对多的关系,树和图属于非线性结构。
2) 下列哪些操作可以在栈上进行?()a) 入栈b) 出栈c) 查找d) 删除答案:a) 入栈b) 出栈解析:栈是一种后进先出(LIFO)的数据结构,只能在栈顶进行插入和删除操作。
3. 简答题1) 请简要介绍线性表和非线性表。
答案:线性表是数据元素的一个有限序列,元素之间存在一对一的关系。
非线性表是指元素之间存在一对多或多对多的关系,如树和图。
2) 请解释什么是时间复杂度和空间复杂度。
答案:时间复杂度是衡量算法执行效率的度量,表示算法的运行时间随输入规模增长的速度。
空间复杂度是指算法执行过程中所需的存储空间随输入规模增长的速度。
4. 编程题题目:实现一个栈,包含push、pop和getMin三个操作,要求时间复杂度为O(1)。
答案:class MinStack:def __init__(self):self.stack = []self.min_stack = []def push(self, x):self.stack.append(x)if not self.min_stack or x <= self.min_stack[-1]:self.min_stack.append(x)def pop(self):if self.stack.pop() == self.min_stack[-1]:self.min_stack.pop()def getMin(self):return self.min_stack[-1]解析:在栈的基础上,使用一个辅助栈min_stack来记录当前栈中的最小值。
数据结构练习附答案
一、单项选择题1.逻辑关系是指数据元素间的()A.类型B.存储方式C.结构D.数据项2.对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为( )A.顺序表 B.用头指针表示的单循环链表C. 用尾指针表示的单循环链表D. 单链表3.设数组data[m]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作后其头指针front值为()A.front=front+1 B.front=(front+1)%(m-1)C.front=(front-1)%m D.front=(front+1)%m4.在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队头指针和队尾指针,则判断队满的条件为( )。
A.rear%n==front B.(front+l)%n==rearC.rear%n-1==front D.(rear+l)%n==front5.在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队头指针和队尾指针,则判断队空的条件为( )。
A.rear%n==front B.front+l=rearC.rear==front D.(rear+l)%n=front6.已知一颗二叉树上有92个叶子结点,则它有____个度为2的结点。
( )A. 90B. 91C. 92D. 937.在一棵非空二叉树的中序遍历序列中,根结点的右边_____。
A. 只有右子树上的所有结点B. 只有右子树上的部分结点C. 只有左子树上的所有结点D. 只有左子树上的部分结点8.有n条边的无向图的邻接表存储法中,链表中结点的个数是( )个。
A. nB. 2nC. n/2D. n*n9.判断有向图是否存在回路,除了可利用拓扑排序方法外,还可以利用()。
A. 求关键路径的方法B.求最短路径的方法C. 深度优先遍历算法D.广度优先遍历算法10.对线性表进行二分查找时,要求线性表必须( )。
数据结构习题
图习题(三)
• 1.如图所示是一个无向网图,请分别按Prim 算法和Kruskal算法求最小生成树。
查找习题(一)
1.已知一个有序表为(12,18,24,35,47,50,62,83,90,115,134), 当折半查找值为 90 的元 素时,经过( )次比较后查找成功。 A2 B3 C4 D5 2.已知 10 个元素(54,28,16,73,62,95,60,26,43),按照依次插入 的方法生成一棵二叉排序树,查找值为 62 的结点所需比较次数为( )。 A2 B3 C4 D5 3.已知数据元素为(34,76,45,18,26,54,92,65),按照依次插入结点 的方法生成一棵二叉排序树,则该树的深度为( )。 A4 B5 C6 D7 4.按( )遍历二叉排序树得到的序列是一个有序序列。 A 前序 B 中序 C 后序 D 层次 5.在散列函数 H(k)= k mod m 中,一般来讲,m 应取( )。 A 奇数 B 偶数 C 素数 D 充分大的数
8.设链栈中结点的结构:data为数据域,next为指针域,且top是栈顶指针。若想 在链栈的栈顶插入一个由指针s所指的结点,则应执行下列( )操作。 A.s->next=top->next;top->next=s; B.top->next=s; C.s->next=top;top=top->next; D.s->next=top;top=s;
D.根据元素查找
线性表习题(二)
1.链表相对于顺序表的优点是: 插入、删除 方便。 2.顺序表中访问任意一个结点的时间复杂度均为 O(1) 。 3.在单链表中要在已知结点*P之前插入一个新结点,需找到 *P的直接前趋结点的地址,其查找的时间复杂度为 O(n) 。 4.单链表中需知道 头指针 才能遍历整个链表。 5.在一个长度为n的顺序表中删除第i个元素,要移动 n-i 个元 素。 6.在一个长度为n的顺序表中,如果要在第i个元素前插入一 个元素,要后移 n-i+1 个元素。 7.双链表中,设p是指向其中待删除的结点,则需要执行的操 作为: p->prior->next=p->next 。
数据结构练习题及答案
数据结构练习题(一)一、单选题1.栈和队列的共同特点是( )。
A.只允许在端点处插入和删除元素B.都是先进后出C.都是先进先出D.没有共同点2.用链接方式存储的队列,在进行插入运算时( )。
A. 仅修改头指针B. 头、尾指针都要修改C. 仅修改尾指针D.头、尾指针可能都要修改3.以下数据结构中( )是非线性结构。
A. 队列B. 栈C. 线性表D. 二叉树4.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在()位置。
脚注(10)表示用10进制表示。
A.688 B.678 C.692 D.6965.树最适合用来表示( )。
A.有序数据元素B.无序数据元素C.元素之间具有分支层次关系的数据D.元素之间无联系的数据6.二叉树的第k层的结点数最多为( )。
A.2k-1 +1 D. 2k-17.若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A[3]的比较序列的下标依次为( )。
A. 1,2,3B. 9,5,2,3C. 9,5,3D. 9,4,2,38.对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K)=K %9作为散列函数,则散列地址为1的元素有()个。
A.1 B.2 C.3 D.49.设有6个结点的无向图,该图至少应有( )条边才能确保是一个连通图。
二、填空题1.通常从四个方面评价算法的质量:_________、_________、_________和_________。
2.一个算法的时间复杂度为(n3+n2log2n+14n)/n2,其数量级表示为________。
3.假定一棵树的广义表表示为A(C,D(E,F,G),H(I,J)),则树中所含的结点数为__________个,树的深度为___________,树的度为_________。
数据结构练习题
第1章绪论一、选择题1. 算法的计算量的大小称为计算的()。
A.效率 B. 复杂性 C. 现实性 D. 难度2. 算法的时间复杂度取决于()A.问题的规模 B. 待处理数据的初态 C. A和B3. 下面说法错误的是()(1)算法原地工作的含义是指不需要任何额外的辅助空间(2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界(4)同一个算法,实现语言的级别越高,执行效率就越低A.(1) B.(1),(2) C.(1),(4) D.(3)4. 以下数据结构中,哪一个是线性结构()A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串5. 在下面的程序段中,对x的赋值语句的频度为()for (int i=1; i<=n; i++)for (int j=1; i<=n;j++)x+=1;A.2n B.n C.n2D.log2n二、判断题1. 数据元素是数据的最小单位。
( )2. 算法的优劣与算法描述语言无关,但与所用计算机有关。
( )3. 数据的物理结构是指数据在计算机内的实际存储形式。
( )4. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。
( )5. 数据结构的抽象操作的定义与具体实现有关。
( )三、填空1.数据的物理结构包括的表示和的表示2. 数据结构中的逻辑结构有(1),(2),(3),__(4)_四种。
3. 一个数据结构在计算机中称为存储结构4. 数据结构中评价算法的两个重要指标是5. 一个算法具有5个特性: (1)、(2)、(3),有零个或多个输入、有一个或多个输出。
6. 已知如下程序段, 语句1执行的频度为(1);语句2执行的频度为(2);for (int i=n; i>=1; i--) {x = x+1; //语句1for (int j = n; j>=1; j--)y = y+1; //语句2}7. 下面程序段中带下划线的语句的执行次数的渐进时间复杂度为int i=1; while (i<n) i = i*2;四、应用题1. 解释和比较以下各组概念(1)抽象数据类型及数据类型(2)数据结构、逻辑结构、存储结构(3)抽象数据类型(4)算法的时间复杂性(5)算法(6)频度2. 若有100个学生,每个学生有学号,姓名,平均成绩,采用什么样的数据结构最方便,写出这些结构?3. 有实现同一功能的两个算法A1和A2,其中A1的时间复杂度为Tl=O(2n),A2的时间复杂度为T2=O(n2),仅就时间复杂度而言,请具体分析这两个算法哪一个好.4. 下列算法对一n位二进制数加1,假如无溢出,该算法的最坏时间复杂性是什么?并分析它的平均时间复杂性。
数据结构章节练习
5.在线性链表存储结构下,插入操作算法
。
A. 需要判断是否表满
B. 需要判断是否表空
C. 不需要判断表满
D. 需要判断是否表空和表满
6.一个长度为 n(n>1)的单链表,已知有头和尾两个指针,则执行
表的长度有关。
操作与链
A. 删除单链表中的第一个元素 B. 删除单链表中的最后一个元素
C. 在单链表第一个元素前插入一个新元素
。
5.数据逻辑结构包括 ① 、 ②
和③
三种类型,树形结构和图形结构
合称为 ④。
6.我们把每种数据结构均视为抽象类型,它不但定义了数据的 ① 理数据的 ② 。
方式,还给出了处
7.一个算法的时间复杂度是用该算法 ①的多少来度量的,一个算法的空间复杂度是用该
算法在运行过程中所占用的②___ _的大小来度量的。
10.对于循环队列
。
A. 无法判断队列是否为空
B. 无法判断队列是否为满
C. 队列不可能满
D. 以上说法都不是
11. 设环形队列中数组的下标范围是1~n,头尾指针分别是 f 和 r,则其元素个数
为
。
A. r-f
B. r-f+1
C. (r-f+1) mod n
D. (r-f+n) mod n
12. 若用一个大小为6的数组来实现循环队列,且当前队尾指针 rear 和队头指针 front 的值
C. s->next = h; h = h->next;
D. s->next = h->next; h->next=s;
8.一个栈的入栈序列是 a,b,c,d,e,则栈的不可能的输出序列是
数据结构含答案
数据构造综合练习一、选择题1.数据的存储构造包括顺序、、散列和〔〕4种根本类型。
A索引 B数组 C集合 D向量2.下面程序的时间复杂性的量级为〔〕。
int i=0,s1=0,s2=0;while〔i++<n〕{if (i%2)s1+=i;else s2+=i;}A.O(1)B.O(1bn)C.O〔n〕D.O(2n)3.下面程序段的时间复杂度为〔〕。
for(int i=0;i<m;i++)for(int j=0;j<n;j++)a[i][j]=i*j;A.O(m2)B.O(n2)C.O(m+n)D.O(m*n)4.在一个长度为n的顺序存储构造的线性表中,向第i个元素〔1≤ i≤n+1〕位置插入一个元素时,需要从后向前依次后移〔〕个元素。
A.n-iB.n-i+lC.n-i-lD.i5.在一个长度为n的顺序存储构造的线性表中,删除第i个元素〔1≤i≤n+1〕时,需要从前向后依次后移〔〕个元素。
A.n-iB.n-i+lC.n-i-lD.i6.在一个长度为n的线性表中,删除值为*的元素时需要比拟元素和移动元素的总次数为〔〕。
A.(n+1)/2B.n/2C.nD.n+17.在一个顺序表中的任何位置插入一个元素的时间复杂度为〔〕。
A. O(n)B. O(n/2)C. O(1)D. O(n2)8. 线性表的链式存储比顺序存储更有利于进展〔〕操作。
A.查找B.表尾插入和删除C.按值插入和删除D.表头的插入和删除9. 线性表的顺序存储比链式存储更有利于进展〔〕操作。
A.查找B.表尾插入和删除C.按值插入和删除D.表头的插入和删除10. 在一个表头指针为ph的单链表中,假设要向表头插入一个由指针p指向的结点,则应执行〔〕操作。
A. ph=p; p->ne*t=ph;B. p->ne*t=ph; ph=p;C. p->ne*t=ph; p=ph;D. p->ne*t=ph->ne*t; ph->ne*t=p;11. 在一个表头指针为ph的单链表中,假设要在指针q所指结点的后面插入一个由指针p 所指向的结点,则执行〔〕操作。
数据结构练习题(含答案)
数据结构练习题习题1 绪论1.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 填空题(将正确的答案填在相应的空中)1. 数据逻辑结构包括、和三种类型,树形结构和图形结构合称为。
2. 在线性结构中,第一个结点前驱结点,其余每个结点有且只有个前驱结点;最后一个结点后续结点,其余每个结点有且只有个后续结点。
3. 在树形结构中,树根结点没有结点,其余每个结点有且只有个直接前驱结点,叶子结点没有结点,其余每个结点的直接后续结点可以。
4. 在图形结构中,每个结点的前驱结点数和后续结点数可以。
5. 线性结构中元素之间存在关系,树形结构中元素之间存在关系,图形结构中元素之间存在关系。
数据结构练习
(2)请对上问中的二叉树分别进行前序、中序、后序遍历。
46、已知一棵二叉树的中序遍历结果为:DBFEAGHCI,后序遍历结果为: DFEBHGICA。 (1)画出这棵二叉树,并写出它的前序遍历结果; (2)将这棵二叉树转换成等价的森林。 47、已知序列(89,97,78,56,61,82,88,50,86,75),请按照下列排序方法对该序 列进行升序排列。
[]
A. 顺序表
B.链表 C. 散列表
D. 队列
11、有 6 个元素 6,5,4,3,2,1 的顺序进栈,问下列哪个不是合法的出栈
序列?
[]
A.543621
B.453126
C.346521
D.234156
12、在头指针为 head 且表长大于 1 的单循环链表中,指针 p 指向表
中某个结点,若 p->next->next=head,则( )
位置,这种排序方法叫做
排序。
43、常用的交换排序有冒泡排序和
。
三、综合应用题
44、有一员工信息表 EMP(no,name,age)欲采用单链表存储,请为
该单链表设计结点结构并用 C 语言描述。
struct EMP
{
int no;
char name[20];
int age;
struct EMP*next;
。
30、当线性表的元素总数基本稳定,且很少进行插入和删除操作,但
要求以最快的速度存取线性表中的元素时,应采用
存储结构。
31、单链表的结点由
和
组成。
32、栈存取数据的原则是
。
数据结构练习题及参考答案
数据结构练习题第一部分绪论一、单选题1. 一个数组元素a[i]与________的表示等价。
A、 *(a+i)B、 a+iC、 *a+iD、 &a+i2. 对于两个函数,若函数名相同,但只是____________不同则不是重载函数。
A、参数类型B、参数个数C、函数类型3. 若需要利用形参直接访问实参,则应把形参变量说明为________参数A、指针B、引用C、值4. 下面程序段的时间复杂度为____________。
for(int i=0; i<m; i++)for(int j=0; j<n; j++)a[i][j]=i*j;A、 O(m2)B、 O(n2)C、 O(m*n)D、 O(m+n)5. 执行下面程序段时,执行S语句的次数为____________。
for(int i=1; i<=n; i++)for(int j=1; j<=i; j++)S;A、 n2B、 n2/2C、 n(n+1)D、 n(n+1)/26. 下面算法的时间复杂度为____________。
int f( unsigned int n ) {if ( n==0 || n==1 ) return 1; else return n*f(n-1);}A、 O(1)B、 O(n)C、 O(n2)D、 O(n!)二、填空题1. 数据的逻辑结构被分为__________、_________、__________和__________四种。
2. 数据的存储结构被分为__________、_________、__________和__________四种。
3. 在线性结构、树形结构和图形结构中,前驱和后继结点之间分别存在着________、________和________的联系。
4. 一种抽象数据类型包括__________和__________两个部分。
5. 当一个形参类型的长度较大时,应最好说明为_________,以节省参数值的传输时间和存储参数的空间。
数据结构练习
8. 若串S1=‘ABCDEFGHIJK’,S2=‘451223’,S3=‘####’,则执行Substring(S1,Strlength(S3),Index(S2,‘12’,1))的结果是 DEF。
选择题1. 在下列存储形式中,哪一个不是树的存储形式?(D)A.双亲表示法 B.孩子链表表示法C.孩子兄弟表示法 D.顺序存储表示法2. 查找n个元素的有序表时,最有效的查找方法是(C)。
A.顺序查找 B.分块查找C.折半查找 D.二叉查找3.将所示的s所指结点加到p所指结点之后,其语句应为(D)。
A.s->next=p+1 ; p->next=s;B.(*p).next=s; (*s).next=(*p).next;C.s->next=p->next ; p->next=s->next;D.s->next=p->next ; p->next=s;4. 在有向图的邻接表存储结构中,顶点v在链表中出现的次数是(C )。
A. 顶点v的度B. 顶点v的出度C. 顶点v的入度D. 依附于顶点v的边数5.算法的时间复杂度为O(nlog2n)、空间复杂度为O(1)的排序算法是(A)。
A. 堆排序B. 快速排序C. 归并排序D.直接选择1.设矩阵A是一个对称矩阵,为了节省存储,将其下三角部分(如右图所示)按行序存放在一维数组B[ 1, n(n-1)/2 ]中,对下三角部分中任一元素ai,j(i≤j), 在一维数组B中下标k的值是(B):A.i(i-1)/2+j-1 B.i(i-1)/2+jC.i(i+1)/2+j-1 D.i(i+1)/2+j2.由一个长度为11的有序表,按二分查找法对该表进行查找,在表各元素等概率情况下,查找成功的平均查找长度是(C)。
A.29/11 B. 31/11C. 33/11D.35/113. AVL树是一种平衡的二叉排序树,树中任一结点的(B)。
数据结构练习
一、单选题1.树结构最适合用来表示( )。
A.有序数据B.无序数据C.元素间具有分支层次关系的数据D.元素间无关联的数据2.除根结点外,树上每个结点( )。
A.可有任意多个孩子、一个双亲B.可有任意多个孩子、任意多个双亲C.可有一个孩子、任意多个双亲D.只有一个孩子、一个双亲3.3个结点可构成( )个不同形态的二叉树。
A.2 B.3 C.4 D.54.某完全二叉树有7个叶子,则其结点总数为( )。
A.14 B.13 C.13或14 D.以上都不是5.高度为n、结点数也为n的二叉树,共有( )棵。
A.n B.2n−1 C.n−1D.2n−16.下面的二叉树中,( )不是完全二叉树。
7.二叉树的结构如下图所示,其中序遍历的序列为( )。
A.a,b,d,g,c,e,f,h B.d,g,b,a,e,c,h,fD.a,b,c,d,e,f,g,hC.任一结点无右孩子D.空或只有一个结点9.二叉树的叶子结点在前序、中序和后序遍历序列中的相对次序( )。
A.可能改变B.一定会改变C.一定不改变D.可能变也可能不变10.假设某完全二叉树顺序存储在数组BT[m]中,其中根结点存放在BT[0],若BT[i]中的结点有左孩子,则左孩子存放在( )。
A.BT[i/2] B.BT[2*i-1] C.BT[2*i] D.BT[2*i+1] 11.对n个结点的二叉树,按( )遍历顺序对结点编号(号码为1~n)时,任一结点的编号等于其左子树中结点的最大编号加1,又等于其右子树中结点的最小编号减1。
A.前根B.中根C.后根D.层次12.在二叉链表上交换所有分支结点左右子树的位置,则利用( )遍历方法最合适。
A.前序B.中序C.后序D.按层次13.已知森林F={T1,T2,T3},各棵树T i(i=1,2,3)中所含结点的个数分别为7,3,5,则与F对应的二叉树的右子树中的结点个数为( )。
A.10 B.12 C.8 D.1514.下图所示二叉树对应的森林中有( )棵树。
Python数据结构——练习题及答案
目录习题一 (3)习题二 (5)习题三 (7)习题四 (9)习题五 (11)习题六 (14)习题七 (18)习题八 (20)习题九 (22)习题一一、选择题1.下列有关说法不正确的是(D)。
A.数据元素是数据的基本单位B.数据项是数据中不可分割的最小可标识单位C.数据可由若干个数据元素构成D.数据项可由若干个数据元素组成2.计算机所处理的数据一般具备某种内在联系,这是指(A.数据和数据之间存在某种关系B.元素和元素之间存在某种关系C.元素内部存在某种关系D.数据项和数据项之间存在某种关系3.从逻辑上可以把数据结构分为(C)两大类。
A.动态结构和静态结构B.顺序结构和链式结构C.线性结构和非线性结构D.初等结构和构造型结构4.下面关于算法的说法正确的是(D)。
A.算法最终必须由计算机程序执行B.算法就是为解决某一问题而编写的程序C.算法的可行性是指不能有二义性指令D.以上几个都是错误的5.算法的时间复杂度取决于(C)。
A.问题的规模B.待处理数据的初态C.A和BD.以上都不是B)。
二、填空题1.数据项是数据元素中不可分割的最小标识单位,通常不具备完整、确定的实际意义,只是反映数据元素某一方面的属性。
2.数据的逻辑结构通常分为集合、线性结构、树形结构和图状(或网状)结构。
3.链式存储结构、数据的存储结构通常分为顺序存储结构、索引存储结构和哈希(或散列)存储结构。
4.一个算法有5个特性,即有穷性、确定性、可行性、输入和输出。
5.在对算法的空间复杂度进行分析时,只需考虑临时变量所占用的存储空间而不用考虑形参占用的存储空间。
三、编程题(略)习题二一、选择题1.顺序表比链表的存储密度更大,是因为(B)。
A.顺序表的存储空间是预先分配的B.顺序表不需要增加指针来表示元素之间的逻辑关系C.链表的所有结点是连续的D.顺序表的存储空间是不连续的2.假定顺序表中第一个数据元素的存储地址为第1000个存储单元,若每个数据元素占用3个存储单元,则第五个元素的地址是第(C)个存储单元。
(完整版)数据结构练习题及参考答案
数据结构练习题第一部分绪论一、单选题1. 一个数组元素a[i]与________的表示等价。
A、 *(a+i)B、 a+iC、 *a+iD、 &a+i2. 对于两个函数,若函数名相同,但只是____________不同则不是重载函数。
A、参数类型B、参数个数C、函数类型3. 若需要利用形参直接访问实参,则应把形参变量说明为________参数A、指针B、引用C、值4. 下面程序段的时间复杂度为____________。
for(int i=0; i<m; i++)for(int j=0; j<n; j++)a[i][j]=i*j;A、 O(m2)B、 O(n2)C、 O(m*n)D、 O(m+n)5. 执行下面程序段时,执行S语句的次数为____________。
for(int i=1; i<=n; i++)for(int j=1; j<=i; j++)S;A、 n2B、 n2/2C、 n(n+1)D、 n(n+1)/26. 下面算法的时间复杂度为____________。
int f( unsigned int n ) {if ( n==0 || n==1 ) return 1; else return n*f(n-1);}A、 O(1)B、 O(n)C、 O(n2)D、 O(n!)二、填空题1. 数据的逻辑结构被分为__________、_________、__________和__________四种。
2. 数据的存储结构被分为__________、_________、__________和__________四种。
3. 在线性结构、树形结构和图形结构中,前驱和后继结点之间分别存在着________、________和________的联系。
4. 一种抽象数据类型包括__________和__________两个部分。
5. 当一个形参类型的长度较大时,应最好说明为_________,以节省参数值的传输时间和存储参数的空间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
阅读下列程序,并写出其运行结果。
1.Void P(int w)
{
If(w>0)
{ p(w-1);
Cout<<w;
}
}
调用p(4)=
2.Void P(int w)
{
If(w>)
{Cout<<w;
p(w-1);
}
}
调用p(4)=
3.Void P(int w)
{
If(w>0)
{Cout<<w;
4.在编号的完全二叉树中,判断编号为i和j的两个结点在同一层的条件是什么?
for (j=i;j<n;j++) x++;
时间复杂度为:
(2)i=n;
while (i>1) i=i/2;
时间复杂度为:
(3)for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
for (k=1;k<=n;k++)
x++;
时间复杂度为:
(4)for (i=1;i<n;i++)
for (j=1;j<n;j++) x++;
2.以数据集合{4,6,8,10,12,15,18,20,22}中的元素为叶子结点的权值构造一棵哈夫曼树,并计算其带权路径长度。
3.分别用Prim算法和Kruskal算法求解出下图的最小生成树,在空内填写每一步所加入的边的两个顶点,如Prim算法第一步加入的边的两个顶点为①⑥
(1)Prim算法:
,,,,,
for (k=1;k<n;k++) x++;
时间复杂度为:
2.假设栈S的一个输入序列为1,2,3,4,5,判断序列1,3,4,5,2是否是合法的输出序列,请解释理由(进出栈顺序)。
3.已知一棵树的度为4,其中度为4的结点数目为3,度为3的结点数目为4,度为2的结点数目为5,度为1的结点数目为2,请求出该树中的叶子结点的数目。
(5030 120 25 85 40 100 12 90 15 60 35 105 78 10 28)
9.将下面的数据分别调整为大根堆和小根堆。
(5030 120 25 85 40 100 12 90 15 60 35 105 78 10 28)
四、简答题
1.计算整个程序段的时间复杂度。
(1)for (i=0;i<n;i++)
p(w-1);
Cout<<w;
}
}
调用p(4)=
4.Void P(int w)
{
If(w>0)
{ p(w-1);
p(w-1);
Cout<<w;
}
}
调用p(4)=
三、操作题
1.分别由下面的两个序列构造出相应的二叉树
(1)先序:ABCDEFGHI中序:ADECFBGIH
(2)后序:DCFEBIHGA中序:DCBFEAGHI
(2)Kruskal算法:
,,,,,
4.对有序数据表(5,7,9,12,15,18,20,22,25,30,100)构造二分查找判定树。
5.设散列函数为H(k)=k%7,采用拉链法处理冲突,将关键字10,26,38,43,55,69,72,88,100,92依次存储到散列表中,并求出等概率情况下的平均查找长度。
6.对下面数据表,写出采用希尔排序算法排序的每趟的结果。
(78100 120 25 85 40 90 15 60 35 105 50 30 10 28 12)
7.对下面数据表,写出采用冒泡排序算法排序的每趟的结果。
(10550 30 25 85 40 100 12 10 28)
8.对下面数据表,写出采用快速排序算法排序的第一趟的结果。