数据结构 练习题

合集下载

数据结构练习题

数据结构练习题

. . . . .一、单选题第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 为正整数。

数据结构 练习题

数据结构 练习题
A)10 B)110 C)1110 D)1111
6. 已知一棵二叉树的先序遍历序列为EFHIGJK,中序遍历序列为HFIEJGK,则该二叉树根的右子树的根是
A)E B)F C)G D)J
7. 设结点A有左孩子结点B,右孩子结点C,则在先序遍历、中序遍历、后序遍历这三种基本遍历序列中B一定是C的
图6-2 例6.3附图
6 自测习题
1. 简答题
1. *根据权值(1,2,3,4,5,6),构造哈夫曼树,并计算二叉树的带权路径长度。
2. 请
将下图6-1所示的森林转换成二叉树。
图6-1 简答题2的附图森林
3. *已知一棵二叉树的中序遍历序列为DHBEAIFCGJK,该二叉树的后序遍历序列是HDEBIFJKGCA,现请画出这棵二叉树。
第1章 概述
一、简答题
1.简述以下术语的含义并说明它们之间的关系。
数据类型、数据结构、逻辑结构、存储结构
2.简述算法时间效率和空间效率的概念。
3.简述数据结构课程的目的和意义。
二、选择题
1.以下数据结构中,逻辑结构属于线性结构的是
A)有向图 B)链式栈 C)二叉树 D)二叉排序树
四、算法及分析
1.写出交换两个整型变量值的算法,并分析算法的时间复杂度。
2.写出求n的阶乘 的算法,并分析算法的时间复杂度。
第2章 线性表
一、简答题
1.在处理某个问题时,需要存储的数据总量不能确定,并经常需要进行数据的添加和删除操作,此时应选用哪种存储结构?为什么?
3.设有结点定义
struct node
{ int data;
struct node *next;

数据结构练习题

数据结构练习题

一.填空题1、设r指向单链表的最后一个结点,要在最后一个结点之后插入s所指的结点,需执行的三条语句是___________;r=s; r->next=null;。

2、解决散列表冲突的两种方法是开放定址法和__________________。

3、设二叉树中度数为0的结点数为50,度数为1的结点数为30,则该二叉树中总共有_______个结点数。

4、模式串P=‘abaabcac’的next函数值序列为________。

5、设有一个n阶的下三角矩阵A,如果按照行的顺序将下三角矩阵中的元素(包括对角线上元素)存放在n(n+1)个连续的存储单元中,则A[i][j]与A[0][0]之间有_______个数据元素。

6、struct record{int key; int others;};int bisearch(struct record r[ ], int k){int low=0,mid,high=n-1;while(low<=high){________________________________;if(r[mid].key==k) return(mid+1);else if(____________) high=mid-1;else low=mid+1;}return(0);}7、设有向图G的二元组形式表示为G =(D,R),D={1,2,3,4,5},R={r},r={<1,2>,<2,4>,<4,5>,<1,3>,<3,2>,<3,5>},则给出该图的一种拓扑排序序列__________。

8、设连通图G中有n个顶点e条边,则对应的最小生成树上有___________条边。

9、for(i=1,t=1,s=0;i<=n;i++) {t=t*i;s=s+t;}的时间复杂度为_________。

10、设一组初始记录关键字序列为(48,37,64,96,75,12,26,50),则以d=4为增量的一趟希尔排序结束后的结果为_____________________________。

数据结构练习附答案

数据结构练习附答案

一、单项选择题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.栈和队列的共同特点是( )。

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)),则树中所含的结点数为__________个,树的深度为___________,树的度为_________。

数据结构练习题

数据结构练习题

后, rear 的值为 , front 的值 为 ,当前队列的 长 度 为 。 14.设循环队列的容量为 40(序号从 0 到 39), 现经过一系列的入队和出队运算后, 有: ① front=11,rear=19; ② front=19,rear=11; 问在这两种情况下,循环队列中各有元素多少个? 15.写出下列程序段的输出结果(队列中的元素类型 QElem Type 为 char)。 void main( ){ Queue Q; Init Queue (Q); Char x=’e’; y=’c’; EnQueue (Q,’h’); EnQueue (Q,’r’); EnQueue (Q, y); DeQueue (Q,x); EnQueue (Q,x); DeQueue (Q,x); EnQueue (Q,’a’); while(!QueueEmpty(Q)){ DeQueue (Q,y); printf(y); }; printf(x); } 16.简述以下算法的功能(栈和队列的元素类型均为 int) void algo3(Queue &Q){ Stack S; int d; InitStack(S); while(!QueueEmpty(Q)){ DeQueue (Q,d); Push(S,d); }; while(!StackEmpty(S)){ Pop(S,d); EnQueue (Q,d); } }
第一章 绪论
1.数据结构是研究数据的( )以及它们之间的相互关系。 A.物理结构,逻辑结构 B.理想结构,抽象结构 C.理想结构,物理结构 D.抽象结构,逻辑结构 2.从逻辑上可以把数据结构分为( )两大类。 A.动态结构、静态结构 B.顺序结构、链式结构 C.线性结构、非线性结构 D.初等结构、构造型结构 3.以下不属于算法要素的是( ) A. 有穷性 B. 可行性 C. 可读性 D. 输入 4.算法的时间复杂度与( )有关。 A.问题规模 B.计算机硬件性能 C.编译程序质 D.程序设计语言 2 5.某算法的时间复杂度为 O(n ),表明该算法的( ) 2 A.问题规模是 n B.执行时间等于 n2 C.执行时间与 n2 成正比 D.问题规模与 n2 成正比 6.假设某算法语句总的执行次数为 T(n)=2n³ +n² ,那么该算法的时间复杂性量级为 ( ) A.O(2) B.O(n³ ) C.O(n² ) D.O(1) 7.设 n 为正整数,下面程序段中标号为①的语句频度为 。 int i = 1; k = 0; while ( i <= n-1 ){ k += 10*i; ① i++; } 8.程序段 for( i=0; i<n; i++ ) for( j=0; j<i; j++ ) k++; 中,语句 k++的执行次数为 。 9.在下面的程序段中,对 x 的赋值语句的渐进时间复杂度为 。 for(k=1;k<=n;k++) for(j=1;j<=n;j++) x=x+1; 10.下面程序段的时间复杂度为 。 void fun(int n) { int y=1; while (y <=n) y=2*y; }

数据结构题库及答案详解

数据结构题库及答案详解

数据结构题库及答案详解一、选择题1. 在数据结构中,线性结构的特点是什么?A. 结构中存在唯一的开始结点和终端结点B. 结构中所有结点的前驱和后继都存在C. 结构中所有结点都只有一个直接前驱和一个直接后继D. 结构中存在多个开始结点和终端结点答案:C2. 栈是一种特殊的线性表,其特点是:A. 先进先出B. 先进后出C. 可以同时在两端进行插入和删除操作D. 只能在一端进行插入和删除操作答案:D3. 在二叉树的遍历算法中,先序遍历的顺序是:A. 先访问根结点,然后遍历左子树,最后遍历右子树B. 先遍历左子树,然后访问根结点,最后遍历右子树C. 先遍历右子树,然后访问根结点,最后遍历左子树D. 先遍历左右子树,最后访问根结点答案:A二、填空题4. 在图的遍历中,______算法可以避免重复访问同一顶点。

5. 哈希表的冲突可以通过______方法来解决。

答案:4. 深度优先搜索(DFS)5. 链地址法或开放地址法三、简答题6. 简述排序算法中的快速排序算法的基本原理。

答案:快速排序算法是一种分治算法,它通过选择一个元素作为“基准”,然后将数组分为两个子数组,一个包含小于基准的元素,另一个包含大于基准的元素。

然后对这两个子数组递归地应用快速排序算法。

7. 解释什么是递归,并给出一个递归函数的例子。

答案:递归是一种在函数中调用自身的编程技术。

递归函数必须有一个明确的终止条件,以避免无限递归。

例如,计算阶乘的递归函数如下:```int factorial(int n) {if (n == 0) return 1; // 终止条件return n * factorial(n - 1); // 递归调用}```四、编程题8. 编写一个函数,实现单链表的反转。

答案:```c// 假设ListNode是链表节点的定义ListNode* reverseList(ListNode* head) {ListNode* prev = NULL;ListNode* curr = head;ListNode* next = NULL;while (curr != NULL) {next = curr->next; // 保存下一个节点curr->next = prev; // 反转指针prev = curr; // 移动prevcurr = next; // 移动curr}return prev; // 新的头节点}```9. 给定一个整数数组,请实现一个函数来找到数组中的最长连续子序列的长度。

数据结构试题库及答案

数据结构试题库及答案

数据结构试题库及答案一、选择题(每题2分,共20分)1. 在数据结构中,线性表的顺序存储结构通常使用()来存储。

A. 链表B. 栈C. 队列D. 数组答案:D2. 以下哪个算法不是排序算法?A. 快速排序B. 归并排序C. 深度优先搜索D. 堆排序答案:C3. 在二叉树的遍历算法中,先访问根节点,然后遍历左子树,最后遍历右子树的遍历方式是()。

A. 先序遍历B. 中序遍历C. 后序遍历D. 层序遍历答案:A4. 哈希表的冲突解决方法不包括以下哪种?A. 链地址法B. 线性探测法C. 二分查找法D. 再散列法答案:C5. 在图的遍历算法中,广度优先搜索(BFS)使用的辅助数据结构是()。

A. 栈B. 队列C. 堆D. 链表答案:B6. 下列关于堆的描述中,错误的是()。

A. 堆是一种特殊的完全二叉树B. 堆中的每个节点的值都大于其子节点的值C. 堆可以用于实现优先队列D. 堆的插入操作的时间复杂度为O(log n)答案:B7. 在一个长度为n的数组中,使用二分查找算法查找一个元素的最坏情况下的时间复杂度是()。

A. O(1)B. O(n)C. O(n^2)D. O(log n)答案:D8. 以下哪个数据结构不是线性结构?A. 链表B. 栈C. 队列D. 二叉树答案:D9. 以下哪个算法是动态查找表?A. 直接索引B. 顺序查找C. 二分查找D. 哈希表答案:D10. 在图的表示方法中,邻接矩阵表示法的缺点是()。

A. 占用空间大B. 占用空间小C. 插入和删除操作复杂D. 遍历操作复杂答案:A二、填空题(每题2分,共20分)1. 在一个长度为n的数组中,使用顺序查找算法查找一个元素的时间复杂度为________。

答案:O(n)2. 一个具有n个节点的完全二叉树的高度为________。

答案:log2(n) + 1(向上取整)3. 一个长度为n的链表,删除一个节点的时间复杂度为________。

答案:O(1)4. 在图的表示方法中,邻接表表示法的缺点是________。

数据结构练习题

数据结构练习题

第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,假如无溢出,该算法的最坏时间复杂性是什么?并分析它的平均时间复杂性。

数据结构练习题及参考答案

数据结构练习题及参考答案

《数据结构》练习题一、解答题(共50分)1、(8分)假设用于通讯的电文字符集及其出现的频率如下表所示。

请为这8个字符设计哈夫曼编码,并画出其哈夫曼树,计算WPL 。

2. (8分)若一棵二叉树中序遍历和后序遍历序列分别为:DBEHGAFIC 和DHGEBIFCA 。

试画出这棵二叉树,并写出其先序遍历和层序遍历序列。

3.(16分)以下无向网络以邻接表为存储结构(假设邻接表的顶点表按字母a 、b 、c 、d 、e 、f 、g 、h 的顺序依次存储,邻接表的边表结点按顶点的下标由小到大链接)。

请画出其邻接表,并写出从顶点f 出发,分别进行深度和广度优先遍历的序列,写出用Prime 方法从顶点c开始产生最小生成树的边的序列。

4.(8分)已知键值序列为(44,39,67,25, 52,59,43,84,54,58,15,26,12,73,92,69),取填充因子α=0.8,采用线性探查法处理冲突,试构造散列表。

⒌(5分)已知一组记录为(67,88,15,12,60,37,7,31,45,81),用希尔排序方法进行排序,d1=5,d2=3,d3=1,则第二趟的排序结果是( )。

⒍(5分)已知一组记录为(67,88,15,12,60,37,7,31,45,81) ,用堆(大根堆)排序方法进行排序,第一趟的排序结果是( )。

二、完善程序(共20分,每空2分)1.假设一组递减有序的原始数据存储在数组r 中,存放元素的下标下限为low,下标上字符 出现频率 a 0.05 b 0.03 c 0.24 d 0.16 e 0.08 f 0.24 g 0.18 h0.02限为high,以下是在数组中查找数值为k的折半查找算法。

请填空完善程序。

int BinSearch(int r[ ], int low,int high,int k){ int l,h,m;l= low; h= high;while ( ⑴){m= ⑵;if (k < r[m]) ⑶;else if (k > r[m]) ⑷;else return m;}return 0;}2. 以下程序功能是将数组r中,从下标first到end之间的元素进行快速排序的分区。

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

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

数据结构练习题习题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. 线性结构中元素之间存在关系,树形结构中元素之间存在关系,图形结构中元素之间存在关系。

数据结构练习题

数据结构练习题

一、填空题
1.线性表、栈和队列都是 线性 结构,可以在线性表的 任意 位置插入和删除元素;对 于栈只能在 栈顶 插入和删除元素;对于队列只能在 队尾 插入和 队头 删除元素。 2. 栈是一种特殊的线性表,允许插入和删除运算的一端称为 栈顶 。不允许插入和删除 运算的一端称为 栈底 。 3. 队列 是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性 表。 4. 在一个循环队列中,队首指针指向队首元素的 当前 位置。 5. 在具有n个单元的循环队列中,队满时共有 n-1 个元素。 6. 向栈中压入元素的操作是先 插入元素 ,后 移动指针 。 7. 从循环队列中删除一个元素时,其操作是 先 读取元素 ,后 移动指针 。
数据结构
武汉大学测绘学院虞晖
1. 假设有二维数组A6×8,每个元素用相邻的6个字节存储,存储器按字节编址。已知A 的起始存储位置(基地址)为1000,则数组A的体积(存储量)为 288 ;末尾元素A57 的第一个字节地址为 1282 ;若按行存储时,元素A14的第一个字节地址为 1072 ;若按 列存储时,元素A47的第一个字节地址为 1276 。 2. 设数组a[1…60, 1…70]的基地址为2048,每个元素占2个存储单元,若以列序为主序 顺序存储,则元素a[32,58]的存储地址为 8950 。 3. 三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分 别表示该元素的 行下标 、 列下标 和 元素值 。
数据结构
武 汉 大 学 测 绘 学 院 虞晖
单项选择题
( C)1.数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续 的,称之为:
(A)存储结构 (B)逻辑结构 (C)顺序存储结构 (D)链式存储结构 ( B)2. 一个表第一个元素的存储地址是100,每个元素的长度为2,则第5个元 素的地址是 (A)110 (B)108 (C)100 (D)120 ( A)3. 在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是:

数据结构练习题及部分答案

数据结构练习题及部分答案

第一章绪论一.选择题1.数据结构被形式地定义为(K,R),其中K是①的有限集合,R是K上的②的有限集合。

①A.算法B.数据元素C.数据操作D.逻辑结构②A.操作B.映象C.存储D.关系2.算法分析的目的是①,算法分析的两个主要方面是②。

①A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性②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)等五个特性。

(1)A. 计算方法 B.排序方法C. 解决问题的有限运算序列D.调度方法(2)A.可行性,可移植性和可扩充性 B.可行性,确定性和有穷性C.确定性,有穷性和稳定性D.易读性,稳定性和安全性9.以下关于数据的逻辑结构的叙述中正确的是()。

A.数据的逻辑结构是数据间关系的描述B.数据的逻辑结构反映了数据在计算机中的存储方式C.数据的逻辑结构分为顺序结构和链式结构D.数据的逻辑结构分为静态结构和动态结构10.算法分析的主要任务是()。

数据结构练习题及参考答案

数据结构练习题及参考答案

数据结构练习题第一部分绪论一、单选题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、从逻辑上可以把数据结构分为( C )两大类。

A、动态结构与静态结构B、顺序结构和链式结构C、线性结构与非线性结构D、简单结构与复合结构2、数据的存储结构包括顺序、链式、散列和( D ) 4种基本类型。

A、向量B、数组C、集合D、索引3、线性表是具有n个( C )的有限序列(n>0)。

A、表元素B、字符C、数据元素D、数据项4、线性表中,( C )只有一个直接前驱和一个直接后继。

A、首元素B、尾元素C、中间元素D、所有的元素5、往顺序栈中压入一个元素时,栈顶指针是( A )。

A、加1B、减1C、不变D、清06、若进栈序列为1,2,3,4,5,进栈的过程中可以退栈,则(C )不可能是一个退栈序列。

A、3421B、2431C、1423D、32147、判定一个循环队列Q(存放元素位置0~MaxQueueSize-1)队满的条件是(C )。

A、Q.front==Q.rearB、Q.front+1==Q.rearC、Q.front==( Q.rear+1)% MaxQueueSizeD、Q.rear==( Q.front+1)% MaxQueueSize8、串是一种特殊的线性表,其特殊性体现在( B )。

A、可以顺序存储B、数据元素是一个字符C、可以链式存储D、数据元素可以是多个字符9、下列关于串的叙述中,正确的是( A )。

A、一个串的字符个数即是该串的长度B、一个串的长度至少是1C、空串是由一个空格字符组成的串D、两个串S1和S2 若长度相同,则这两个串相等10、数组是一个(C )线性表结构。

A、不加限制B、加了限制C、推广了的D、非11、数组与一般线性表的区别主要是( D )。

A、存储方面B、元素类型一致C、逻辑结构方面D、一般不能进行插入、删除运算12、线性表采用链式存储时,其地址( A )。

A、连续与否均可以B、一定是连续的C、部分地址必须是连续的D、必须是连续的13、以下数据结构中,是非线性数据结构的是( A )。

数据结构试题集(包含答案 完整版)

数据结构试题集(包含答案 完整版)

第一章概论一、选择题1、研究数据结构就是研究( D )。

A. 数据的逻辑结构B. 数据的存储结构C. 数据的逻辑结构和存储结构D. 数据的逻辑结构、存储结构及其基本操作2、算法分析的两个主要方面是( A )。

A. 空间复杂度和时间复杂度B. 正确性和简单性C. 可读性和文档性D. 数据复杂性和程序复杂性3、具有线性结构的数据结构是( D )。

A. 图B. 树C. 广义表D. 栈4、计算机中的算法指的是解决某一个问题的有限运算序列,它必须具备输入、输出、( B )等5个特性。

A. 可执行性、可移植性和可扩充性B. 可执行性、有穷性和确定性C. 确定性、有穷性和稳定性D. 易读性、稳定性和确定性5、下面程序段的时间复杂度是( C )。

for(i=0;i<m;i++)for(j=0;j<n;j++)a[i][j]=i*j;A. O(m2)B. O(n2)C. O(m*n)D.O(m+n)6、算法是( D )。

A. 计算机程序B. 解决问题的计算方法C. 排序算法D. 解决问题的有限运算序列7、某算法的语句执行频度为(3n+nlog2n+n2+8),其时间复杂度表示( C )。

A. O(n)B. O(nlog2n)C. O(n2)D. O(log2n)8、下面程序段的时间复杂度为( C )。

i=1;while(i<=n)i=i*3;A. O(n)B. O(3n)C. O(log3n)D. O(n3)9、数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的()和运算等的学科。

A. 结构B. 关系C. 运算D. 算法10、下面程序段的时间复杂度是(A )。

i=s=0;while(s<n){i++;s+=i;}A. O(n)B. O(n2)C. O(log2n)D. O(n3)11、抽象数据类型的三个组成部分分别为( A)。

A. 数据对象、数据关系和基本操作B. 数据元素、逻辑结构和存储结构C. 数据项、数据元素和数据类型D. 数据元素、数据结构和数据类型12、通常从正确性、易读性、健壮性、高效性等4个方面评价算法的质量,以下解释错误的是()。

Python数据结构——练习题及答案

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

第1章概述一、简答题1.简述以下术语的含义并说明它们之间的关系。

数据类型、数据结构、逻辑结构、存储结构2.简述算法时间效率和空间效率的概念。

3.简述数据结构课程的目的和意义。

二、选择题1.以下数据结构中,逻辑结构属于线性结构的是A)有向图B)链式栈C)二叉树D)二叉排序树2.下列与数据元素有关的叙述中错误的是A)数据元素是有独立含义的数据最小单位B)数据元素是描述数据的基本单位C)数据元素可以称做结点D)数据元素可以称做记录3.设问题的规模为n,分析以下程序段:a=10; b=100;while (b>0){ a++;b- -;}以上程序段的算法时间复杂度是A)O(1) B)O(n) C)O(n2) D)O()三、填空题1.数据结构包括的三方面内容分别是:数据的[1] 、数据的[2] 和数据的运算。

2.数据元素是数据的基本单位,在某些情况下也可以称为[1] 、[2] 和[3] 。

3.数据逻辑结构的4种基本形态包括集合结构、[1] 结构、[2] 结构和[3] 结构。

4.一个正确的算法应该具有5个特性:[1] 、[2] 、[3] 、[4] 和[5] 。

5.数据的存储结构包括顺序、[1] 、[2] 和[3] 四种。

6.一个数据结构在计算机中的映象称为[1] 。

7.一个算法的效率主要是指该算法的[1] 效率和[2] 效率。

8.以下程序段的时间复杂度T(n)= 。

sum=0;for(i=0 ; i<n; i++)for( j=0; j<n; j++)sum+=a[i][j];printf("%d\n",sum);四、算法及分析1.写出交换两个整型变量值的算法,并分析算法的时间复杂度。

2.写出求n的阶乘的算法,并分析算法的时间复杂度。

第2章 线性表一、简答题1.在处理某个问题时,需要存储的数据总量不能确定,并经常需要进行数据的添加和删除操作,此时应选用哪种存储结构?为什么?2、简述头指针、头结点的区别,以及头指针和头结点的作用。

二、选择题1.以下链表结构中,从当前结点出发能够访问到任一结点的是A )单向链表和双向链表B )双向链表和循环链表C )单向链表和循环链表D )单向链表、双向链表和循环链表2.线性表是具有n 个 的有限序列。

A )数据项B )数据元素C )表元素D )字符3.若长度为n 的线性表采用链式存储结构,访问其第i 个元素的算法时间复杂度为A )O(1)B )O(n)C ) O(n 2)D )O(log 2n)4.在长度为n 的顺序表中,若要删除第i (1≤i ≤n )个元素,则需要向前移动的元素的次数为A )iB )n-iC )n-i+1D )n-i-15.在长度为n 的顺序表中第i (1≤i ≤n )个位置上插入一个元素时,为留出插入位置所需移动元素的次数为A )n-iB )iC )n-i+1D )n-i-16.下述哪一条是顺序存储结构的优点?A .存储密度大B .插入运算方便C .删除运算方便D .可方便地用于各种逻辑结构的存储表示7.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( )存储方式最节省时间。

A .顺序表B .双链表C .带头结点的双循环链表D .单循环链表8. 若长度为n 的线性表采用顺序存储结构,在其第i 个位置插入一个新元素的算法的时间复杂度为( )(1<=i<=n+1)。

A. O(0)B. O(1)C. O(n)D. O(n 2)三、填空题1.有一单链表结构如下:图2-1 填空题1附图 若要删除值为C 的结点,应做的操作是 。

2.线性表L=( a 1,a 2,…a n )用数组存储。

假定删除表中任一元素的概率相同,则删除一个元素… … data link平均需要移动的元素个数是 。

3.设有结点定义struct node{ int data;struct node *next;};且已建立如图2-2所示的带有头结点的单向链表:图2-2 填空题3附图函数sum 的功能是:计算非空的链表中各结点数据域之和,并用函数值返回该结果。

请填空。

int sum(struct node *head){ int s=0;struct node *p;p=head->next;do{ s=s+ [1] ;p=p->next;}while ( p!= [2] );return s;}4. 带头结点的双循环链表L 中只有一个数据结点的判定条件是:________。

5. 在单链表L 中,指针p 所指结点有后继结点的判定条件是:__ 。

6. 带头结点的单循环链表L 为空表的条件是:________。

7. 在单链表p 结点之后插入s 结点的操作是:_______。

四、算法设计*1.有序顺序表、单链表的插入算法。

设线性表有序(按由小到大的顺序排列),分别编写顺序表、带有头结点的单链表的插入算法,使插入值为x 的元素后线性表仍保持有序的算法。

*2.单链表的输出算法:输出带有头结点的单向链表中各结点的值。

*3.顺序表、单链表的删除算法:分别编写顺序表、带有头结点的单链表中删除所有值为x 的结点的算法。

4.顺序表、单链表的逆置算法:分别实现顺序表、带有头结点的单链表的逆置操作。

即将线性表(a1,a2,…an )逆置为(an,…a2,a1)。

5.顺序表、单链表的查找算法:分别实现顺序表、带有头结点的单链表中查找最后一个值为x 的结点位置的算法。

6.写出求单链表、循环单链表表长的算法。

7.有序顺序表、有序单链表的归并算法。

…data next分别编写将两个有序顺序表、两个带有头结点的单链表归并成一个有序线性表(按由小到大的顺序排列)的归并算法,要求尽量利用原来的存储空间。

8. 设L为单链表的头结点地址,单链表中数据结点的数据都是正整数且无相同的,试设计利用直接插入的原则把该链表整理成数据递增的有序单链表的算法。

9. 已知线性表(a1 a2 a3 …an)按顺序存于内存中,每个元素都是整数,试设计用最少时间把所有值为负数的元素移到全部正数值元素前边的算法:例:(x,-x,-x,x,x,-x …x)变为(-x,-x,-x…x,x,x),其中x>0。

第三章请设计算法:利用栈结构和栈的基本运算将一个十进制数转换成指定的k(k=2~9)进制数。

第6章树例题分析与解答例6.1 设有一棵树的度为3,其中度为1、2、3的结点个数分别为5、2、1、,则这棵树中叶子结点的个数为A)4 B)5 C)6 D)7【解答】设这棵树中叶子结点的个数为n0,根据已知,在这棵树中结点的总数n=5+2+1+ n0=8+ n0;此外,从树的性质又可知,度为1的结点有1个分?В任?2的结点有2个分支,度为3的结点则有3个分支,因此这棵树的总的分支数为:1*5+2*2+3*1=12,而一棵有n个结点的树,只允许有n-1个分支存在,所以又有:n-1=12,即n=13,将n代入上式,则n0=5。

所以,选项B是正确的。

例6.2 一棵权值为1,2,3,4,5,6的哈夫曼树,如图6-1所示,其中方框为带权的叶子结点,圆圈为非叶子结点。

则该哈夫曼树的带权路径长度WPL,及权值为1的叶子结点的高度分别为A)51;5 B)72;5 C)51;4 D)72;4图6-1 例6.2附图哈夫曼树【解答】其中n表示叶子结点的数目,wi表示叶结点的权值,li表示根到叶结点之间的路径长度。

因此有:WPL= (1+2)*4+3*3+ (4+5+6)*2=51。

权值为1的叶结点的高度很明显为5。

所以,本题的答案为选项A。

例6.3 假设已知某二叉树的前序遍历序列和后序遍历序列,则根据已知条件一定能唯一地确定出一棵二叉树。

请问这句话对吗?【解答】错。

例如某二叉树的前序遍历序列为:AB;后序遍历序列为BA;根据条件可以画出如图6-2所示的两棵不同的二叉树。

因此已知前序和后序遍历序列,并不能唯一地确定出一棵二叉树。

图6-2 例6.3附图6 自测习题1.简答题1.*根据权值(1,2,3,4,5,6),构造哈夫曼树,并计算二叉树的带权路径长度。

2.请将下图6-1所示的森林转换成二叉树。

图6-1 简答题2的附图森林3.*已知一棵二叉树的中序遍历序列为DHBEAIFCGJK,该二叉树的后序遍历序列是HDEBIFJKGCA,现请画出这棵二叉树。

4.*给出图6-2所示的一棵二叉树的顺序存储结构、二叉链表和三叉链表存储结构。

图6-2 简答题4的附图二叉树2.判断题1.由树转化为二叉树,其根结点的右子树总是空的。

()2.若有一个结点是某二叉树的前序遍历序列中的第一个结点,则它也一定是这棵二叉树的中序遍历序列中的第一个结点。

()3.若一个树叶是某二叉树的前序遍历序列中的最后一个结点,则它也一定是这棵二叉树的中序遍历序列中的最后一个结点。

()4.若一个树叶是某二叉树的中序遍历序列中的最后一个结点,则它也一定是这棵二叉树的前序遍历序列中的最后一个结点。

()5.在二叉树中,具有一个子女的父结点,在中序遍历序列中没有后继结点。

而具有两个子女的父结点,在中序遍历序列中,它的后继结点最多只能有一个子女结点。

()6.虽然已知二叉树的前序遍历和中序遍历序列,但还不能唯一确定出这棵二叉树,因为并不知道二叉树的根结点是哪一个。

()7.在满二叉树中,存在度为1的结点。

()8.在任意一棵二叉树中,终端结点的个数等于度为2的结点个数加1。

()9.前序遍历序列与中序遍历序列完全相同的二叉树有:空二叉树或任一结点均无左子树的非空二叉树。

()3.选择题1.如果结点A是结点B的双亲,而且结点B有4个兄弟,则结点A的度是A)2 B)3 C)4 D)52.设有一棵二叉树,其1度结点有m个,2度结点有n个,则该二叉树的结点总数为A)m+n B)2*m+n C)m+2*n D)m+2*n+13.设有一棵二叉树,其先序遍历序列是:ABCDEFG,中序遍历序列是:CBDAFEG,则该二叉树的后序遍历序列是A)CDBFGEA B)CDFGBEA C)CDBAFGE D)CDBFEGA4.设有13个值,由它们组成一棵哈夫曼树,则该哈夫曼树中结点个数共有。

A)13 B)12 C)26 D)255.设电文中出现的字母为A、B、C、D和E,每个字母在电文中出现的次数分别为:6,23,3,5和12,按哈夫曼编码,则字母C的编码应是A)10 B)110 C)1110 D)11116.已知一棵二叉树的先序遍历序列为EFHIGJK,中序遍历序列为HFIEJGK,则该二叉树根的右子树的根是A)E B)F C)G D)J7.设结点A有左孩子结点B,右孩子结点C,则在先序遍历、中序遍历、后序遍历这三种基本遍历序列中B一定是C的A)前驱B)后继C)相邻结点D)不相邻结点4.填空题1.采用二叉链式存储结构,具有n个结点的二叉树中,一共有[1] 个指针域,其中[2]个指针域为空。

相关文档
最新文档