数据结构(递归、数组、矩阵)练习题与答案

合集下载

数据结构考试题及答案

数据结构考试题及答案

数据结构考试题及答案一、选择题(每题2分,共20分)1. 以下哪个不是线性数据结构?A. 数组B. 链表C. 树D. 图2. 在一个单链表中,删除一个节点的操作需要知道该节点的:A. 地址B. 值C. 索引D. 前驱节点的引用3. 栈(Stack)是一种:A. 线性表B. 树状结构C. 图结构D. 散列表4. 哈希表解决冲突最常用的方法是:A. 排序B. 链地址法C. 再散列D. 除留余数法5. 以下哪个排序算法是稳定的?A. 快速排序B. 冒泡排序C. 选择排序D. 堆排序二、简答题(每题10分,共30分)1. 简述数组和链表的区别。

2. 解释二叉搜索树的基本概念及其优势。

3. 什么是递归?请给出一个简单的递归算法例子。

三、计算题(每题25分,共50分)1. 给定一个无序数组,请写出一个时间复杂度为O(n log n)的排序算法,并说明其工作原理。

2. 描述如何使用队列来实现一个简单的文本编辑器的撤销和重做功能。

四、编程题(共30分)编写一个函数,该函数接受一个整数数组作为参数,返回数组中所有元素的和。

如果数组为空,返回0。

答案一、选择题1. 答案:C(树和图都是非线性结构)2. 答案:D(需要前驱节点的引用来删除节点)3. 答案:A(栈是一种后进先出的特殊线性表)4. 答案:B(链地址法是解决哈希冲突的常用方法)5. 答案:B(冒泡排序是稳定的排序算法)二、简答题1. 数组和链表的区别:- 数组是连续的内存空间,链表是非连续的。

- 数组的索引访问速度快,链表需要遍历。

- 数组的大小固定,链表动态可变。

2. 二叉搜索树的基本概念及其优势:- 二叉搜索树是一种特殊的二叉树,左子树上所有节点的值小于它的根节点的值,右子树上所有节点的值大于它的根节点的值。

- 优势:支持快速的查找、插入和删除操作。

3. 递归是函数自己调用自己的过程。

例如,计算n的阶乘的递归算法: ```cint factorial(int n) {if (n <= 1) return 1;return n * factorial(n - 1);}```三、计算题1. 快速排序算法:- 选择一个元素作为“基准”(pivot)。

数据结构期末考试及答案

数据结构期末考试及答案

一、单选题1、逻辑上通常可以将数据结构分为( )A.初等结构和组合结构B.顺序结构和链式结构C.线性结构和非线性结构D.动态结构和静态结构正确答案:C2、如果在数据结构中每个数据元素只可能有一个直接前驱,但可以有多个直接后继,则该结构是()。

A.栈B. 队列C.图D.树正确答案:D3、在长度为n的顺序表的第i个位置上插入一个元素(1<=i<=n+1),元素的移动次数为:()A.n-iB.i-1C.n-i+1D.i正确答案:C4、在非空线性链表中由p所指结点的后面插入一个由q所指的结点,应依次执行()A.q->next=p;p->next=q;B.p->next=q;q->next=p;C.q->next=p->next;p->next=q;D.q->next=p->next;p=q;正确答案:C5、已知栈的最大容量为4。

若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则可能出现的出栈序列为()A.2,3,5,6,1,4B.1,4,6,5,2,3C.5,4,3,2,1,6D.3,2,5,4,1,6正确答案:D6、设栈S和队列Q初始均为空,若6个元素入栈的顺序为1、2、3、4、5、6,一个元素出栈以后立即入队列Q,若6个元素出队的顺序为2、4、3、6、5、1,则栈S的容量至少为()A.3B.5C.4D.2正确答案:A7、在计算机内实现递归算法时所需的辅助数据结构是()A.队列B.栈C.图D.树正确答案:B8、循环队列存储在数组A[0..m-1],则出队时的操作为()A.front=(front mod m)+1B.ront=(front+1)mod mC.front=front+1D.front=(front+1)mod (m-1)正确答案:B9、若以S和X分别表示进栈和退栈操作,则对初始状态为空的栈可以进行的栈操作系列合法的是()A.SXXSXSSXB.SSSXXSXXC.SXSSXXXXD.SXSXXSSX正确答案:B10、在具有m个单元的循环队列中,队头指针为front,队尾指针为rear,则队满的条件是()A.(front+1)%m==rearB.(rear+1)%m==frontC.front==rearD.rear+1==front正确答案:B11、在表长为n的顺序表上做插入运算,平均要移动的结点数为()A.n/4B.nC.n/3D.n/2正确答案:D12、元素的进栈次序为A,B,C,D,E,则退栈中不可能的序列是()A.E,D,C,B,AB.A,B,C,D,EC.E,A,B,C,DD.B,C,D,E,A正确答案:C13、下述二叉树中,()满足性质:从任一结点出发到根的路径上所经过的结点序列按其关键字有序。

计算机数据结构习题1附答案

计算机数据结构习题1附答案

文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.第1章 绪论1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。

解:数据是对客观事物的符号表示。

在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。

数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

数据对象是性质相同的数据元素的集合,是数据的一个子集。

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

存储结构是数据结构在计算机中的表示。

数据类型是一个值的集合和定义在这个值集上的一组操作的总称。

抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。

是对一般数据类型的扩展。

1.2 填空题:1.常见的数据结构有__结构,_____结构,____结构等三种。

2.常见的存储结构有_________结构,______结构等两种。

3.数据的基本单位是____,它在计算机中是作为一个整体来处理的。

4.数据结构中的结构是指数据间的逻辑关系,常见的结构可分为两大类,______和_____。

5.《数据结构》课程讨论的主要内容是数据的逻辑结构、存储结构和________。

1.2设有数据结构(D,R),其中{}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r =试按图论中图的画法惯例画出其逻辑结构图。

解:1.3设有以下三个函数:()10002124++=n n n f ,()3450015n n n g+=,()n n n n h log 5005.3+=请判断以下断言正确与否:(1) f(n)是O(g(n)) (2) h(n)是O(f(n)) (3) g(n)是O(h(n)) (4) h(n)是O(n 3.5) (5) h(n)是O(nlogn)解:(1)对 (2)错 (3)错 (4)对 (5)错第二章序列2.1 描述以下三个概念的区别:头指针,头结点,首元结点(第一个元素结点)。

数据结构试题及答案

数据结构试题及答案

数据结构试题及答案一、选择题(每题2分,共20分)1. 在数据结构中,线性结构的特点是元素之间存在一对一的线性关系。

以下哪个数据结构不属于线性结构?A. 栈B. 队列C. 树D. 链表答案:C2. 栈(Stack)是一种后进先出(LIFO)的数据结构,以下哪个操作不是栈的基本操作?A. PushB. PopC. TopD. Sort答案:D3. 在二叉树的遍历中,前序遍历的顺序是:A. 根-左-右B. 左-根-右C. 右-根-左D. 根-右-左答案:A4. 哈希表的冲突可以通过多种方法解决,以下哪个不是解决哈希表冲突的方法?A. 链地址法B. 开放地址法C. 再散列法D. 排序法答案:D5. 以下哪个排序算法是稳定的?A. 快速排序B. 堆排序C. 归并排序D. 选择排序答案:C6. 在图的遍历中,深度优先搜索(DFS)使用的是哪种数据结构来实现?A. 队列B. 栈C. 链表D. 哈希表答案:B7. 以下哪个是图的存储方式?A. 顺序存储B. 链式存储C. 散列表D. 矩阵存储答案:D8. 动态数组(如C++中的vector)在插入元素时可能需要进行的操作是:A. 原地扩展B. 复制元素C. 重新分配内存D. 释放内存答案:C9. 以下哪个不是算法的时间复杂度?A. O(1)B. O(log n)C. O(n^2)D. O(n!)答案:D10. 在查找算法中,二分查找法要求被查找的数据必须是:A. 无序的B. 有序的C. 随机分布的D. 唯一元素答案:B二、简答题(每题5分,共30分)1. 简述链表和数组的区别。

答案:链表和数组都是存储数据的线性数据结构,但它们在内存分配、访问方式、插入和删除操作等方面存在差异。

数组在内存中是连续存储的,可以通过索引快速访问任意元素,但插入和删除元素时可能需要移动大量元素。

链表在内存中是非连续存储的,每个元素包含数据和指向下一个元素的指针,不支持通过索引快速访问,但插入和删除操作只需要改变指针,不需要移动其他元素。

数据结构试题及答案()

数据结构试题及答案()

1. 1.数据结构是指数据及其相互之间的______________。

当结点之间存在M对N(M:N)的联系时,称这种结构为_____________________。

2. 2.队列的插入操作是在队列的___尾______进行,删除操作是在队列的____首______进行。

3. 3.当用长度为N的数组顺序存储一个栈时,假定用top==N表示栈空,则表示栈满的条件是___top==0___(要超出才为满)_______________。

4. 4.对于一个长度为n的单链存储的线性表,在表头插入元素的时间复杂度为_________,在表尾插入元素的时间复杂度为____________。

5. 5.设W为一个二维数组,其每个数据元素占用4个字节,行下标i从0到7 ,列下标j从0到3 ,则二维数组W的数据元素共占用_______个字节。

W中第6 行的元素和第4 列的元素共占用_________个字节。

若按行顺序存放二维数组W,其起始地址为100,则二维数组元素W[6,3]的起始地址为__________。

6. 6.广义表A= (a,(a,b),((a,b),c)),则它的深度为____________,它的长度为____________。

7.7.二叉树是指度为2的____________________树。

一棵结点数为N的二叉树,其所有结点的度的总和是_____________。

8.8.对一棵二叉搜索树进行中序遍历时,得到的结点序列是一个______________。

对一棵由算术表达式组成的二叉语法树进行后序遍历得到的结点序列是该算术表达式的__________________。

9.9.对于一棵具有n个结点的二叉树,用二叉链表存储时,其指针总数为_____________个,其中_______________个用于指向孩子,_________________个指针是空闲的。

10.10.若对一棵完全二叉树从0开始进行结点的编号,并按此编号把它顺序存储到一维数组A中,即编号为0的结点存储到A[0]中。

数据结构题库

数据结构题库

栈1设有三个元素X,Y,Z顺序进栈(进的过程中允许出栈),下列得不到的出栈排列是()。

•A、XYZ•B、YZX•C、ZXY•D、ZYX正确答案:C 我的答案:C 得分:14.2分2向一个栈顶指针为hs的链栈中插入一个s结点时,应执行()。

•A、hs->next=s;•B、s->next=hs; hs=s;•C、s->next=hs->next; hs->next=s;•D、s->next=hs; hs=hs->next;正确答案:B 我的答案:B 得分:14.2分3栈在()中应用。

•A、递归调用•B、子程序调用•C、表达式求值•D、A,B,C正确答案:A 我的答案:D 得分:0.0分4栈的操作原则是()。

•A、先进先出•B、后进先出•C、先进后出•D、不分顺序正确答案:B 我的答案:B 得分:14.2分5一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是()。

•A、不确定•B、n-i+1•C、i•D、n-i正确答案:B 我的答案:B 得分:14.2分6链栈与顺序栈相比,有一个比较明显的优点,即()•A、插入操作方便•B、通常不会出现栈满的情况•C、不会出现栈空的情况•D、删除操作更方便正确答案:B 我的答案:D 得分:0.0分二.简答题(共1题,14.8分)1假定有四个元素A,B,C,D依次进栈,进栈过程中允许出栈,试写出所有可能的出栈序列。

正确答案:共有14中可能的出栈序列","分别为: ABCD","ABDC","ACBD"," ACDB","BACD","ADCB","BADC","BCAD"," BCDA","BDCA","CBAD"," CBDA","CDBA"," DCBA。

数据结构习题与答案

数据结构习题与答案
A、所有的操作算法实现简单B、便于随机存储
C、便于插入和删除D、便于利用零散的存储器空间
3.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素算法的时间复杂度为C。
A、O(log2n) B、O(1)
C、O(n) D、O(n2)
4.(1)静态链表既有顺序存储的特点,又有动态链表的优点。所以,它存取表中第i个元素的时间与i无关;
4、线性结构的特征:逻辑上满足有且仅有一个开始结点和一个终端结点,且其余结点有且仅有唯一的一个直接前趋和一个直接后继。
5.数据的存储结构被分为顺序、链接、索引和散列4种。
6.存储结构是逻辑结构的存储实现,其基本目标是建立数据的机内表示。
7.数据表示任务是逐步完成的,即数据表示形式的变化过程是:机外表示→
A、带尾指针的非循环链表B、带尾指针的循环链表
C、带头指针的非循环链表D、带头指针的循环链表
2、若用一个大小为6的数组来实现循环队列,且当rear和front的值分别为0和3。当从队列中删除一个元素,再加入两个元素后,rear和front的值分别是B。
A、1和5 B、2和4
C、4和2 D、5和1
3、设栈的输入序列为1、2、3、4,则C不可能是其出栈序列。
push (s,x); }
push (s,x); printf(x)
push(s,y); }
push(s,x);
push(s,'E');
push(s,x);
此题的输出结果是HELOLLL。
5、以下为单链表删除运算,分析算法,请在处填上正确的语句。
void delete_lkist(lklist head,int i)
D、q->next=p->next;q->prior=p;p->next=q;p->next=q;

数据结构练习附答案

数据结构练习附答案

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

数据结构(递归、数组、矩阵)练习题与答案
1、有一个三维数组A[-2..2][-4..5][2..6],其中元素个数是
()。

A.144
B.250
C.396
D.60
正确答案:B
解析:B、A的第1维长度为5,第2维长度为10,第3维长度为5,元素个数=5×10×5=250。

2、设C/C++二维数组a[m][n],每个数组元素占用k个存储单元,
第一个数组元素的存储地址是LOC(a[0][0]),求按行优先顺序存放
的数组元素a[i][j](0≤i≤m-1,0≤j≤n-1)的存储地址为()。

A.LOC(a[0][0])+[(j-1)×m+i-1]×k
B.LOC(a[0][0])+[i×n+j]×k
C.LOC(a[0][0])+[(i-1)×n+j-1]×k
D.LOC(a[0][0])+[j×m+i]×k
正确答案:B
解析: B、a[i][j]前面有0~i-1行,计i×n个元素,第i行前
面有j个元素,则a[i][j]前面有i×m+ j个元素,所以a[i][j]的
存储地址=LOC(a[0][0])+[i×n+j]×k。

3、设二维数组a[1..5][1..8],若按行优先的顺序存放数组的元素,则a[4][6]元素的前面有()个元素。

A.6
B.40
C.28
D.29
正确答案:D
解析:D、m=5,n=8,a[4][6]元素的前面的元素个数=(4-1) ×8+(6-1)=29。

4、设C/C++二维数组a[6][10],每个数组元素占用4个存储单元,若按行优先顺序存放所有数组元素,a[3][5]的存储地址为1000,则a[0][0]的存储地址是()。

A.864
B.868
C.860
D.872
正确答案:C
解析:C、C/C++二维数组下标从0开始。

a[3][5]前面的元素个数=(3-0)×10+(5-0)=35。

所以1000=LOC(a[0][0])+35×4,LOC(a[0][0])=860。

5、一个n阶对称矩阵A采用压缩存储方式,将其下三角部分(含主对角线元素)按行优先存储到一维数组B中,则B中元素个数是()。

A.n(n+1)/2
B.n*n
C.n(n+1)/2+1
D.n
正确答案:A
6、一个n阶对称矩阵A[1..n,1..n]采用压缩存储方式,将其下三
角部分按行优先存储到一维数组B[1..m]中,则A[i][j](i<j)元< p="">
素在B中的位置k是()。

A.i(i-1)/2+j-1
B.j(j-1)/2+i-1
C.j(j-1)/2+i
D. i(i-1)/2+j
正确答案:C
解析: C、对于下三角部分或者主对角线元素a[i][j],它存储在
b[k]中,k=i(i-1)/2+j。

对于上三角部分元素A[i][j](i<j),对< p="">
应的k=j(j-1)/2+i。

7、一个n阶上三角矩阵A按行优先顺序压缩存放在一维数组B,则
B中元素个数是()。

A.n
B.n*n
C.n(n+1)/2
D.n(n+1)/2+1
正确答案:D
8、一个n(n>3)阶三对角矩阵A按行优先顺序压缩存放在一维数组B,则B中元素个数是()。

A.n*n
B.3n-2
C.3n
D.2n
正确答案:B
9、稀疏矩阵常用的压缩存储方法有()。

A.哈希表和十字链表
B.二维数组
C.三元组和哈希表
D.三元组和十字链表
正确答案:D
10、稀疏矩阵采用压缩存储后的缺点之一是()。

A.无法由行、列值查找某个矩阵元素
B.使矩阵元素之间的逻辑关系更加复杂
C.无法判断矩阵的行列数
D.丧失随机存取特性
正确答案:D
11、一个正确的递归算法通常包含()。

A.递归出口
B.递归体
C.递归出口和递归体
D.以上都不包含
正确答案:C
解析:正确的递归算法应包含递归出口和递归体两部分,缺一不可。

12、递归函数f(x,y)定义如下:
f(x,y)=f(x-1,y)+f(x,y-1) 当x>0且y>0
f(x,y)=x+y 否则
则f(2,1)的值是()。

A.1
B.2
C.3
D.4
正确答案:D
解析: f(2,1)=f(1,1)+f(2,0)=f(0,1)+f(1,0)+2=1+1+2=4。

13、某递归算法的执行时间的递推关系如下:
T(n)=1 当n=1时
T(n)=T(n/2)+1 当n>1时
则该算法的时间复杂度为()。

A. O(1)
B. O(log2n)
C. O(n)
D. O(nlog2n)
正确答案:B
解析:不妨设n=2^k,k=log2n。

T(n)=T(n/2)+1= T(n/2^2)+2=…= T(n/2^k)+k=T(1)+log2n=O(log2n)。

14、某递归算法的执行时间的递推关系如下:
T(n)=1 当n=1时
T(n)=2T(n/2)+1 当n>1时
则该算法的时间复杂度为()。

A. O(1)
B. O(log2n)
C. O(n)
D. O(nlog2n)
正确答案:C
解析:不妨设n=2^k,k=log2n。

T(n)=2^1*T(n/2^1)+1=2^2*T(n/2^2)+1+2^1=…
=2^kT(n/2^k)+1+2^1+…+2^(k-1)=2^k T(1)+2^k-1=2n-1=O(n)。

15、将递归算法转换成非递归算法时,通常要借助的数据结构是()。

A.线性表
B.栈
C.队列
D.树
正确答案:B
解析:递归算法转换成非递归算法时通常使用栈。

</j),对<>
</j)元<>。

相关文档
最新文档