数据结构练习题

合集下载

数据结构练习题

数据结构练习题

. . . . .一、单选题第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. 单选题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.数据的存储结构包括顺序、链接、散列和()4种基本类型。

A索引B数组C集合D向量2.下面程序的时间复杂性的量级为()。

int i=0,s1=0,s2=0;while(i++<n){if (i%2)s1+=i;…else s2+=i;}(1) (1bn) (n)(2n)3.下面程序段的时间复杂度为()。

for(int i=0;i<m;i++)for(int j=0;j<n;j++)a[i][j]=i*j;(m2) (n2) (m+n) (m*n)4.在一个长度为n的顺序存储结构的线性表中,向第i个元素(1≤i≤n+1)位置插入一个元素时,需要从后向前依次后移()个元素。

+l<5.在一个长度为n的顺序存储结构的线性表中,删除第i个元素(1≤i≤n+1)时,需要从前向后依次后移()个元素。

+l6.在一个长度为n的线性表中,删除值为x的元素时需要比较元素和移动元素的总次数为()。

A.(n+1)/2 2 +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->next=ph;B. p->next=ph; ph=p;C. p->next=ph; p=ph;D. p->next=ph->next; ph->next=p;11. 在一个表头指针为ph的单链表中,若要在指针q所指结点的后面插入一个由指针p所指向的结点,则执行()操作。

数据结构练习题

数据结构练习题
一、填空题 1. 数据结构是一门研究非数值计算的程序设计问题中计算机的 操作对象 以及它 们之间的 关系 和运算等的学科。 2. 数据结构被形式地定义为(D, R),其中D是 数据元素 的有限集合,R是D 上的 关系 有限集合。 3. 数据结构包括数据的 逻辑结构 、数据的 存储结构 和数据的 运算 这三个方 面的内容。 4. 数据结构按逻辑结构可分为两大类,它们分别是线性结构和非线性结构 。 5. 线性结构中元素之间存在 一对一 关系,树形结构中元素之间存在 一对多 系 ,图形结构中元素之间存在 多对多 关系。 6. 在线性结构中,第一个结点 没有 前驱结点,其余每个结点有且只有 1个前 驱结点;最后一个结点 没有 后续结点,其余每个结点有且只有1个后续结点 。 7. 在树形结构中,树根结点没有 前驱 结点,其余每个结点有且只有 1 个前驱 结点;叶子结点没有 后续 结点,其余每个结点的后续结点数可以 任意多个 。 8. 在图形结构中,每个结点的前驱结点数和后续结点数可以 任意多个 。 9.数据的存储结构可用2种基本的存储方法表示,它们分别是 顺序存储结构 和连式存储结构 。 10. 数据的运算最常用的有5种,它们分别是 检索、排序、插入、删除、修改 。 11. 一个算法的效率可分为 时间 效率和 空间 效率。
( × )1. 链表的每个结点中都恰好包含一个指针。 答:错误。链表中的结点可含多个指针域,分别存放多个指针。例如,双向链表中的结点可以含有两 个指针域,分别存放指向其直接前趋和直接后继结点的指针。 ( × )2. 链表的物理存储结构具有同链表一样的顺序。错,链表的存储结构特点是无序,而链表的 示意图有序。 ( × )3.链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动地将后续的各个单元 向前移动。错,链表的结点不会移动,只是指针内容改变。 ( × )4.线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。 错,混淆了逻辑结构与物理结构,链表也是线性表!且即使是顺序表,也能存放记录型数据。 ( × )5.顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。 错,正好说反了。顺序表才适合随机存取,链表恰恰适于“顺藤摸瓜” ( × )6.顺序存储方式的优点是存储密度大,且插入、删除运算效率高。 错,前一半正确,但后一半说法错误,那是链式存储的优点。顺序存储方式插入、删除运算效率较低, 在表长为n的顺序表中,插入和删除一个数据元素,平均需移动表长一半个数的数据元素。 ( × )7.线性表在物理存储空间中也一定是连续的。 错,线性表有两种存储方式,顺序存储和链式存储。后者不要求连续存放。 ( × )8.线性表在顺序存储时,逻辑上相邻的元素未必在存储的物理位置次序上相邻。 错误。线性表有两种存储方式,在顺序存储时,逻辑上相邻的元素在存储的物理位置次序上也相 邻。 ( × )9.顺序存储方式只能用于存储线性结构。 错误。顺序存储方式不仅能用于存储线性结构,还可以用来存放非线性结构,例如完全二叉树是属于 非线性结构,但其最佳存储方式是顺序存储方式。 ( × )10.线性表的逻辑顺序与存储顺序总是一致的。 错,理由同7。链式存储就无需一致。

数据结构练习附答案

数据结构练习附答案

一、单项选择题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章绪论一、选择题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,假如无溢出,该算法的最坏时间复杂性是什么?并分析它的平均时间复杂性。

《数据结构》练习题库

《数据结构》练习题库

二、填空题1. 线性表是一种典型的___线性______结构。

2. 在一个长度为n的顺序表的第i个元素之前插入一个元素,需要后移__n-i+1__个元素。

3. 顺序表中逻辑上相邻的元素的物理位置__相邻______。

4. 要从一个顺序表删除一个元素时,被删除元素之后的所有元素均需向__前___移一个位置,移动过程是从_前____向_后____依次移动每一个元素。

5. 在线性表的顺序存储中,元素之间的逻辑关系是通过__物理存储位置_____决定的;在线性表的链接存储中,元素之间的逻辑关系是通过__链域的指针值_____决定的。

6. 在双向链表中,每个结点含有两个指针域,一个指向___前趋____结点,另一个指向____后继___结点。

7. 当对一个线性表经常进行存取操作,而很少进行插入和删除操作时,则采用___顺序__存储结构为宜。

相反,当经常进行的是插入和删除操作时,则采用__链接___存储结构为宜。

8. 顺序表中逻辑上相邻的元素,物理位置__一定_____相邻,单链表中逻辑上相邻的元素,物理位置___不一定____相邻。

9. 线性表、栈和队列都是__线性_____结构,可以在线性表的___任何___位置插入和删除元素;对于栈只能在___栈顶____位置插入和删除元素;对于队列只能在___队尾____位置插入元素和在___队头____位置删除元素。

10. 根据线性表的链式存储结构中每个结点所含指针的个数,链表可分为__单链表_______和__双链表_____;而根据指针的联接方式,链表又可分为__循环链表______和__非循环链表______。

11. 在单链表中设置头结点的作用是__使空表和非空表统一______。

12. 对于一个具有n个结点的单链表,在已知的结点p后插入一个新结点的时间复杂度为_o(1)_____,在给定值为x的结点后插入一个新结点的时间复杂度为__o(n)_____。

13. 对于一个栈作进栈运算时,应先判别栈是否为__栈满_____,作退栈运算时,应先判别栈是否为_栈空______,当栈中元素为m时,作进栈运算时发生上溢,则说明栈的可用最大容量为___m____。

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

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

《数据结构》练习题一、解答题(共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. 一个数组元素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)。

数据结构图练习题(附答案).doc

数据结构图练习题(附答案).doc

第七章 图一、选择题1.图中有关路径的定义是( )。

【北方交通大学 2001 一、24 (2分)】A .由顶点和相邻顶点序偶构成的边所形成的序列B .由不同顶点所形成的序列C .由不同边所形成的序列D .上述定义都不是2.设无向图的顶点个数为n ,则该图最多有( )条边。

A .n-1B .n(n-1)/2C . n(n+1)/2D .0E .n 2【清华大学 1998 一、5 (2分)】【西安电子科技大 1998 一、6 (2分)】【北京航空航天大学 1999 一、7 (2分)】3.一个n 个顶点的连通无向图,其边的个数至少为( )。

【浙江大学 1999 四、4 (4分)】A .n-1B .nC .n+1D .nlogn ;4.要连通具有n 个顶点的有向图,至少需要( )条边。

【北京航空航天大学 2000 一、6(2分)】A .n-lB .nC .n+lD .2n5.n 个结点的完全有向图含有边的数目( )。

【中山大学 1998 二、9 (2分)】A .n*n B.n (n +1) C .n /2 D .n*(n -l )6.一个有n 个结点的图,最少有( )个连通分量,最多有( )个连通分量。

A .0B .1C .n-1D .n【北京邮电大学 2000 二、5 (20/8分)】7.在一个无向图中,所有顶点的度数之和等于所有边数( )倍,在一个有向图中,所有顶点的入度之和等于所有顶点出度之和的( )倍。

【哈尔滨工业大学 2001 二、3 (2分)】A .1/2B .2C .1D .48.用有向无环图描述表达式(A+B)*((A+B )/A ),至少需要顶点的数目为( )。

【中山大学1999一、14】A .5B .6C .8D .99.用DFS 遍历一个无环有向图,并在DFS 算法退栈返回时打印相应的顶点,则输出的顶点序列是( )。

A .逆拓扑有序B .拓扑有序C .无序的 【中科院软件所1998】10.下面结构中最适于表示稀疏无向图的是( ),适于表示稀疏有向图的是( )。

数据结构练习题

数据结构练习题

数据结构练习题(第一部分)一、单项选择题。

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(m 2) B. O(n 2) C. O(m*n) D. O(m+n)6、算法是( D )。

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

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

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

A. 结构B. 关系C. 运算D. 算法10、抽象数据类型的三个组成部分分别为( A )。

A. 数据对象、数据关系和基本操作B. 数据元素、逻辑结构和存储结构C. 数据项、数据元素和数据类型D. 数据元素、数据结构和数据类型11、下列程序段的时间复杂度为(B )。

(完整版)数据结构练习题及参考答案

(完整版)数据结构练习题及参考答案

数据结构练习题第一部分绪论一、单选题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.什么是拓扑排序?2.什么是堆积?3.图的邻接矩阵与邻接表两种存储表示法在空间代价上的差别为何?4.算法与程序的区别是什么?5.什么是堆(heap)?6.什么是栈(stack)?7.什么样的图遍历后由所有顶点和遍历时所经过的边所构成的子图一定是生成树?8.举例说明希尔(Shell)排序是否是稳定的排序方法?9.什么是遍历运算?10.什么是A VL树?11.链表中的表头指针、表头结点和开始结点有什么不同?各自所起的作用是什么?12.举例说明直接选择排序是否是稳定的排序方法?13.什么是完全二叉树(complete binary tree) ?14.什么是稀疏矩阵(sparse matrix) ?15.试述链接存储结构的优缺点。

16.什么是A VL树,它与最佳二叉排序树最主要的差别是什么?17.什么是假溢出?18.什么是排序算法的“稳定性”?19.设高度为h的二叉树中只有度为0和度为2的结点,问此类二叉树中的结点数可能达到的最大值和最小值各为多少?20.顺序查找、折半查找和分块查找各自的平均查找长度ASL是多少?二、单选题1.顺序表中逻辑上相邻的结点其物理位置也( )。

A.一定相邻B.不必相邻C.按某种规律排列D.无要求2.下面关于串的叙述中,哪一个是不正确的? ( )A.串是字符的有限序列C.模式匹配是串的一种重要运算B.空串是由空格构成的串D.串既可以采用顺序存储,也可以采用链式存储3.某二叉树结点的前序序列为ECBAD,中序序列为EBCDA,则该二叉树结点的后序序列为( )。

A.ABCED B.DECAB C.DEABC D.BDACE4. 设二维数组A[m][n] 按列优先顺序存储且每个元素占c个单元,则元素A[i][j] 的地址为()。

A.LOC(A[0][0])+(j*m+i)*c B.LOC(A[0][0])+(i*n+j)*cC.LOC(A[0][0])+[(j-1)*m+i-1]*c D.LOC(A[0][0])+[(i-1)*n+j-1]*c5.在下述几种排序方法中,不稳定的排序方法是()。

A.直接插入排序B.冒泡排序C.直接选择排序D.归并排序6.散列函数有一个共同的性质,即函数值应当以下面的哪一项来取其值域的每个值()。

A.同等概率B.最大概率C.最小概率D.平均概率7.在有n个结点的顺序表中进行插入、删除运算,平均时间复杂度为( )。

A.Ο(1)B.Ο(n)C.Ο(log2n)D.Ο(n2 )8.设s1="abc",则strlen(s1) = ( )。

A.0 B. 1 C.2 D.39. 完全二叉树是下列情况的哪一种( )。

A.一定是满二叉树B.可能是满二叉树C.一定不是满二叉树D.不是二叉树10. 下列说法不正确的是( )。

A.图的遍历是从给定的源点出发每个顶点仅被访问一次B.遍历的基本方法有两种:深度优先遍历和广度优先遍历C.图的深度遍历不适用于有向图D.图的深度优先遍历是一个递归过程11. 数组A[6,7] 的每个元素占5个字节,将其按列优先次序存储在起始地址为1000的内存单元中,则元素A[5,5] 的地址是( )。

A.1165 B.1170 C.1175 D.118012. 在下面的排序方法中,其比较次数与待排序记录的初始排列状态无关的是( )。

A.直接插入排序B.快速排序C.直接选择排序D.归并排序13.在栈中存取数据的原则是( )。

A.先进先出B.后进先出C.后进后出D.随意进出14.设有两个串s1和s2,求s2在s1中首次出现的位置的运算称为( )。

A.求子串B.求串长C.联接D.模式匹配15. 堆的形状是一棵( )。

A.二叉排序树B.满二叉树C.完全二叉树D.A VL树16. 求图的最小生成树问题,考虑的是下面的哪一种图( )。

A.无向图B.有向图C.带权的无向图D.带权的有向图17. 广义表A=(a, b, ( c, d ) , (e,( f , g ) ) ),则式子head ( tail ( head ( tail ( tail ( A ) ) ) ) )的值为()。

A.( g ) B.( d ) C.c D.d18. 设有n个结点的二叉排序树,对于成功的查找,最多的比较次数为( )。

A.Ο( 1) B.Ο(log2n) C.Ο(n) D.Ο(nlog2n)19.经过下列栈的操作后,GetTop(ST)的值是( )。

InitStack(ST); push(ST,'a'); push(ST,'b'); pop(ST,x);A.a B.b C.1 D.220.空串与空格串是相同的,这种说法( ) 。

A.正确B.可能正确C.不正确D.可能不正确21. 在线索二叉树中,p所指结点没有右子树的充要条件是( )。

A.p->rchild == NULL B.p->rtag == 1C.p->rtag == 1且p->rchild == NULL D.p->rtag == 022. 有n个顶点的无向连通图的边数最少为( )。

A.n/2 B.n-1C.n D.n+123. 设广义表L = ( ( a , b , c ) ),则L的长度和深度分别为( )。

A.1和1B.1和3 C.1和2 D.2和324. 折半查找要求结点( )。

A.无序、顺序存储B.无序、链接存储C.有序、顺序存储D.有序、链接存储25.一个栈的入栈序列是a、b、c、d,则栈的不可能的输出序列是( )。

A.acbd B.abcd C.dbca D.adcb26.串是一种特殊的线性表,其特殊性体现在( )。

A.可以顺序存储B.数据元素是一个字符C.可以链接存储D.数据元素可以是多个字符27. 在k叉树中,无父母的结点称为( )。

A.根B.叶C.祖先D.子孙28. 采用邻接表存储的图的广度优先遍历类似于二叉树的( )。

A.前序遍历B.中序遍历C.后序遍历D.层次遍历29. 下列四个序列中,哪一个是堆( ) 。

A.75 , 65 , 30 , 15 , 25 , 45 , 20 , 10 B.75 , 65 , 45 , 10 , 30 , 25 , 20 , 15C.75 , 45 , 65 , 30 , 15 , 25 , 20 , 10 D.75 , 45 , 65 , 10 , 25 , 30 , 20 , 1530. 如果要求线性表既能较快地查找、又能适应动态变化的要求,则可采用的查找方法是( )。

A.顺序查找B.折半查找C.分块查找D.基于属性的查找三、判断题1. 数据的逻辑结构是指数据的各数据项之间的逻辑关系。

()2.链表中的表头结点仅起到标识的作用。

()3.哈夫曼树是带权(外部)路径长度最短的树,路径上权值较大的结点离根较近。

()4.在有向图中,度为0的顶点称为终端顶点(或叶子)。

()5.归并排序在任何情况下都比所有简单的排序方法速度快。

()6. 折半查找法的查找速度一定比顺序查找法快。

()7. 健壮的算法不会因非法的输人数据而出现莫名其妙的状态。

()8.循环链表不是线性表。

()9.完全二叉树的存储结构通常采用顺序存储结构。

()10. 无向图的邻接矩阵可用一维数组存储。

()11. 归并排序的辅助存储空间代价为O( 1 )。

()12. 分块查找在等概率查找情况下,其平均查找长度不仅与表中元素个数有关,而且与每块中的元素个数有关。

()13. 为了方便的插入和删除数据,可以使用双向链表来存放数据。

()14.给定一棵树,可以找到唯一的一棵二叉树与之对应。

()15.邻接矩阵适用于有向图和无向图的存储,但不能存储带权的有向图和无向图,而只能使用邻接表存储形式来存储它。

()16. 当广义表中的每个元素都是原子时,广义表便成了线性表。

()17. 堆是满二叉树。

()18. 对一棵二又排序树按前序方法遍历得到的结点序列是从小到大的序列。

()19. 链接存储结构属动态存储方式。

()20. 采用二叉链表作为存储结构,树的先根遍历和相应的二叉树的前序遍历的结果是一样的。

()21. 带权的连通无向图的最小(代价)生成树必是唯一的。

()22. 广义表的取表尾运算,其结果通常是一个表,但有时也可能是一个单元素值。

()23. 在待排数据基本有序的情况下,快速排序效果最好。

()24. 在A VL树中,向某个平衡因子不为零的结点的树中插入一新结点,必引起平衡旋转。

()25. 数据的存储结构是数据的逻辑结构在计算机存储器上的实现,它是依赖于计算机的。

()26.在指定结点之后插入新结点时,双链表比单链表更方便。

()27.二叉树的遍历只是为了在应用中找到一种线性次序。

()28. 拓扑排序算法仅适用于有向无环图。

()29. 数组是同类型值的集合。

()30. 哈希法的平均查找长度不随表中结点数目的增加而增加,而是随负载因子的增大而增大。

()四、填空题1. head指向的不带表头结点的单链表为空的条件是。

2.具有256个结点的完全二叉树(设根结点的层数为0)的深度为。

3.二维数组A[10][20]采用了行优先的顺序进行存储,每个元素占一个存储单元,并且A[0][0]的存储地址是300,则A[6][12]的地址是。

4.排序是将一组任意排列的记录按的值从小到大或从大到小重新排列成有序的序列。

5. 散列表的查找效率主要取决于散列表造表时选取的和。

6.数据的运算是定义在数据的结构之上的。

7. 对于一个具有n个结点的单链表,在已知p所指结点后插入一个新结点的时间复杂度是;在给定值为x的结点后插入一个新结点的时间复杂度是。

8. 树中结点的最大度数称为树的。

9. 为了实现图的广度优先搜索,除了对已访问的图的结点进行标记外,还需以存放被访问的结点以实现遍历。

10. 在堆排序和快速排序中,若初始记录接近正序或反序,则应选用。

11.在具有n个结点的双链表中进行插入、删除运算,其时间复杂度为。

12. 已知二叉树有50个叶结点,则该二叉树的总结点数至少是。

13. 在有n个顶点的有向图中,若要使任意两点间可以互相到达,则至少需要条有向边(弧)。

14. 选择合适的是解决应用问题的关键步骤。

15. 对于两棵具有而形状不同的二叉排序树,遍历它们得到的结点序列是一样的。

16.在有n个结点的顺序表中进行插入、删除运算,其平均时间复杂度为。

17. 二叉树的前序序列和中序序列相同的条件是。

18. 对于n个顶点、e条边的图,若采用邻接表进行存储,则空间复杂度为。

19. 对n个记录的表R [ l .. n ]进行直接选择排序,所需进行的排序码之间的比较次数为。

20. 有900个结点的线性表若采用分块查找(检索)的方法,最好每块应含有个结点;若按每块含有25个结点来分块并对索引表也采用顺序查找,则平均查找长度为。

相关文档
最新文档