数据结构1-3章相关测试题(含答案)
- 格式:docx
- 大小:20.28 KB
- 文档页数:4
第1章单元测试1、算法的时间复杂度取决于___。
答案:A和B2、数据在计算机内存中的表示是指()答案:数据的存储结构3、算法指的是()答案:求解特定问题的指令有限序列4、在数据结构中,与所使用的计算机无关的数据结构是()答案:逻辑7、某线性表采用顺序存储结构,每个元素占4个存储单元,首地址为100,则第12个元素的存储地址为( )。
答案:1448、算法能正确地实现预定功能的特性称为算法的()。
答案:正确性第2章单元测试1、链表不具备的特点是()。
答案:可随机访问任意一个结点3、线性表的顺序存储表示优于链式存储表示。
答案:错4、顺序存储结构的缺点是不便于修改,插入和删除需要移动很多结点。
答案:对5、在设头、尾指针的单链表中,与长度n有关的操作是( )。
答案:删除最后一个结点6、设指针q指向单链表中结点A,指针p指向单链表中结点A的后继结点B,指针s指向被插入的结点X,则在结点A和结点B间插入结点X的操作序列为( )。
答案:q->next=s; s->next=p;7、对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为( )。
答案:用尾指针表示的循环单链表8、在一个单链表中,若p所指节点不是最后节点,在p之后插入s所指节点,则执行( )。
答案:s->link=p->link;p->link=s;9、在双向链表存储结构中,删除p所指的结点时须修改指针____。
答案:p->next->prior=p->prior; p->prior->next=p->next;10、若事先不知道线性表的长度,则处理线性表时较好的存储结构是( )。
答案:单链表11、向一个有127个元素的顺序表中插入一个新元素并保存,原来顺序不变,平均要移动( )个元素。
答案:63.512、某线性表采用顺序存储结构,每个元素占4个存储单元,首地址为100,则第12个元素的存储地址为( )。
数据结构习题及解答第1章 概述【例1-1】分析以下程序段的时间复杂度。
for(i=0;i<n;i++)for(j=0;j<m;j++) A[i][j]=0;解:该程序段的时间复杂度为O (m*n )。
【例1-2】分析以下程序段的时间复杂度。
i=s=0; ①while(s<n){ i++; ②s+=i; ③}解:语句①为赋值语句,其执行次数为1次,所以其时间复杂度为O (1)。
语句②和语句③构成while 循环语句的循环体,它们的执行次数由循环控制条件中s 与n 的值确定。
假定循环重复执行x 次后结束, 则语句②和语句③各重复执行了x 次。
其时间复杂度按线性累加规则为O (x )。
此时s 与n 满足关系式:s ≥n ,而s=1+2+3+…+x 。
所以有:1+2+3+…+x ≥n ,可以推出:x=n n 241212811+±-=+±-x 与n 之间满足x=f(n ),所以循环体的时间复杂度为O (n ),语句①与循环体由线性累加规则得到该程序段的时间复杂度为O (n )。
【例1-3】分析以下程序段的时间复杂度。
i=1; ①while(i<=n) i=2*i; ②解:其中语句①的执行次数是1,设语句②的执行次数为f (n ),则有:n n f ≤)(2。
得:T(n)=O(n2 log)【例1-4】有如下递归函数fact(n),分析其时间复杂度。
fact(int n){ if(n<=1) return(1); ①elsereturn(n*fact(n-1)); ②}解:设fact(n)的运行时间函数是T(n)。
该函数中语句①的运行时间是O(1),语句②的运行时间是T(n-1)+ O(1),其中O(1)为常量运行时间。
由此可得fact(n)的时间复杂度为O(n)。
习题1一、单项选择题1.数据结构是指(1. A )。
A.数据元素的组织形式B.数据类型C.数据存储结构D.数据定义2.数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为(2. C )。
第1章概论习题参考解答一、填空题1、数据的逻辑结构是数据元素之间的逻辑关系,通常有下列4类:()、()、()、()。
【答】集合、线性结构、树型结构和图状结构。
2、数据的存储结构是数据在计算机存储器里的表示,主要有4种基本存储方法:()、()、()、()。
【答】顺序存储方法、链接存储方法、索引存储方法和散列存储方法。
二、选择题1、一个算法必须在执行有穷步之后结束,这是算法的()。
(A)正确性(B)有穷性(C)确定性(D)可行性【答】B。
2、算法的每一步,必须有确切的定义。
也就是说,对于每步需要执行的动作必须严格、清楚地给出规定。
这是算法的()。
(A)正确性(B)有穷性(C)确定性(D)可行性【答】C。
3、算法原则上都是能够由机器或人完成的。
整个算法好像是一个解决问题的“工作序列”,其中的每一步都是我们力所能及的一个动作。
这是算法的()。
(A)正确性(B)有穷性(C)确定性(D)可行性【答】D。
三、简答题1、算法与程序有何异同?【答】尽管算法的含义与程序非常相似,但两者还是有区别的。
首先,一个程序不一定满足有穷性,因此它不一定是算法。
例如,系统程序中的操作系统,只要整个系统不遭受破坏,它就永远不会停止,即使没有作业要处理,它仍处于等待循环中,以待一个新作业的进入。
因此操作系统就不是一个算法。
其次,程序中的指令必须是计算机可以执行的,而算法中的指令却无此限止。
如果一个算法采用机器可执行的语言来书写,那么它就是一个程序。
2、什么是数据结构?试举一个简单的例子说明。
【答】数据结构是指数据对象以及该数据对象集合中的数据元素之间的相互关系(即数据元素的组织形式)。
例如,队列的逻辑结构是线性表(先进先出);队列在计算机中既可以采用顺序存储也可以采用链式存储;对队列可进行删除、插入数据元素以及判断是否为空队列、将队列置空等操作。
3、什么是数据的逻辑结构?什么是数据的存储结构?【答】数据元素之间的逻辑关系,也称为数据的逻辑结构。
第3章线性表算法题:1、线性表的单链表存储结构如下:Typedef struct LNode{int data;struct LNode *next;}LNode,*linklist;试写算法,计算单循环链表的长度。
函数头定义为:int listlength(linklist ta){ ...}//listlength2.线性表的单链表存储结构如下:typedef struct LNode{ int data;struct LNode *next;}LNode,*linklist;试写算法,将值为x的结点插到带头结点的单链表的链尾。
函数头定义为:void insert(LNode *h, int x){ ...}// insert第4章栈和队列1、P78 题1(1)出栈序列:1,3,2,4(2)出栈序列1432可以得到,即1入栈后出栈,2,3,4依次入栈后出栈4,3,2;出栈序列1423不可能得到,因为先是1入栈后出栈,接着是4出栈,应是按234入栈后开始出栈,这时2不能先于3出栈。
2、P78 题4(1)将栈S中的数据倒置(2)将栈S1数据复制到栈S2中(3)将栈S中值为m的数据删除(4)将队列Q中数据倒置(5)将队列Q1中数据复制到Q2中3、已知一个后缀算术表达式为3 7 25 5 / * - 8 2 * + #画出在进行后缀表达式求值的过程中数值栈的变化。
答案:数值栈的变化:第6章树试问:⑴哪个结点是根结点?⑵哪个结点是D的双亲结点?⑶C的左右孩子分别是什么?⑷画出这棵二叉树。
答案:根结点为: AD的双亲结点: CC的左右孩子: 空、D2. 假设一棵二叉树的先序序列为ABDEGHJCFI 和中序序列为DBGEHJACIF 。
请画出该树。
答案:3.已知二叉树如图所示,画出二叉树中序的线索二叉树的逻辑结构图。
C(a)CBAC(d)(e)答案:GDJHKBEACFMI4. 设有一组权WG=1,4,9,16,25,36,49,64,81,100,试画出其哈夫曼树,并计算加权的路径长度。
数据结构习题(有答案) 第1章绪1。
1 有下列几种二元组表示的数据结构,试画出它们分别对应的图形表示,并指出它们分别属于何种结构。
(1) A= ( D,R ),其中,D = { a1,a2,a3,a4}, R={ }(2) B= ( D,R ),其中,D = { a,b,c,d,e}, R={ (a,b),(b,c),(c,d),(d,e)}(3) C= ( D,R),其中,D = { a,b,c,d,e,f,g}, R={(d,b),(d,g),(1)集合(2) 线性表a b c d e(3)树fgabcde(4)图1453621 / 48·····谢阅。
(b,a),(b,c),(g,e),(e,f)}(4) K= ( D,R ),其中,D= { 1,2,3,4,5,6}, R={〈1,2>,〈2,3>,〈2,4>,<3,4>,<3,5>,<3,6>,<4,5〉,〈4,6〉}1.2设n为正整数,求下列各程序段中的下划线语句的执行次数。
(1) i=1;k=0while(i 〈=n-1){k+=10*i ;i++;(2) for (int i=1;i<=n; i++)for (int j=1; j〈=n; j++){c[i][j]=0;解:(1) n-1(2) ∑∑∑====ninjnkn111312 / 48·····谢阅。
}ﻩ for(intk=1; k〈=n; k++)c[i][j]=c[i][j]+a[i][k]*b[k][j]}(3) x=0;y=0;for (int i=1; i<=n; i++)for (int j=1; j<=i; j++)for (intk=1; k〈=j; k ++)(3)62)1)(nn(n21)(216)12)(1(2121212)1(1112111111++=+•+++•=+=+==∑∑∑∑∑∑∑∑========nnnnniii ijnininiijjkniijni3 / 48·····谢阅。
数据结构c语言版试题大全(含答案)数据结构C语言版试题大全(含答案)第一章:基本概念与算法设计1.1 数据结构的定义与特点数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,它包括了数据的存储、组织和管理方式。
数据结构的特点包括以下几个方面:- 数据元素之间存在某种关系,构成逻辑结构- 对数据元素的操作对应于对其逻辑结构的操作- 数据结构有存储结构,包括顺序存储结构和链式存储结构- 算法是对数据结构的操作步骤的描述和实现1.2 算法的基本概念算法是解决特定问题或完成特定任务的一系列操作步骤。
算法的基本概念包括以下几个方面:- 有穷性:算法必须能在有限步骤内完成- 确定性:算法的每一步骤必须有确定的含义和结果- 可行性:算法的每一步骤必须可行,能够通过执行有限次数实现- 输入:算法接受的输入数据是原始问题的实例- 输出:算法产生的输出数据与输入有明确的关系1.3 算法的描述方法算法可以用自然语言、伪代码或流程图来描述。
常用的伪代码描述方法包括结构化语言和算法描述语言,结构化语言包括顺序结构、分支结构和循环结构。
第二章:线性结构2.1 线性表的定义与基本操作线性表是n个数据元素的有限序列,其中相邻元素之间存在唯一的前驱和后继关系。
线性表的基本操作包括插入、删除、查找和修改等。
2.2 数组与广义表数组是指具有相同数据类型的一组数据元素的集合,可以通过下标访问元素。
广义表是线性表的推广,其中元素可以是基本数据类型或另一个广义表。
第三章:树与二叉树3.1 树的定义与基本术语树是n(n≥0)个结点的一个有限集合,其中满足以下条件:- 有且仅有一个特定的称为根的结点- 其余结点可分为m(m≥0)个互不相交的有限集合,每个集合本身又是一棵树3.2 二叉树的定义与性质二叉树是指每个结点最多有两个子结点的树结构。
二叉树的性质包括以下几个方面:- 深度为k的二叉树最多有2^k-1个结点- 一棵二叉树的第i层最多有2^(i-1)个结点- 在二叉树的第i层上至多有2^(n-i+1)-1个结点(n为树的深度)第四章:图4.1 图的基本概念与术语图是由顶点的有穷非空集合和边的有穷集合组成的。
数据结构第1~3章作业参考答案【1.4】【解法一】⑴抽象数据类型复数:ADT Complex{数据对象:D={ci|ci∈R, i=1,2, 其中R为实数集}数据关系:R={<c1,c2>| ci∈D, i=1,2, 其中c1为复数实部, c2为复数虚部}基本操作:InitComplex (&C,v1,v2)操作结果:构造一个复数C,元素c1, c2分别被赋以参数v1, v2的值。
DestroyComplex(&C)初始条件:复数C已存在。
操作结果:销毁复数C。
GetReal(C, &e)初始条件:复数C已存在。
操作结果:用e返回复数C实部的值。
Get Imaginary(C, &e)初始条件:复数C已存在。
操作结果:用e返回复数C虚部的值。
SetReal(&C, e)初始条件:复数C已存在。
操作结果:用e更新复数C实部的值。
Set Imaginary(&C, e)初始条件:复数C已存在。
操作结果:用e更新复数C虚部的值。
AdditionComplex (&C, C1, C2)初始条件:复数C1,C2已存在。
操作结果:复数C1与复数C2相加,用复数C返回其和。
SubstractComplex(&C, C1, C2)初始条件:复数C1,C2已存在。
操作结果:复数C1减去复数C2,用复数C返回其差。
MultipleComplex(&C, C1, C2 )初始条件:复数C1,C2已存在。
操作结果:复数C1与复数C2相乘,用复数C返回其积。
DividedComplex(&C, C1, C2)初始条件:复数C1,C2已存在,且C2≠0。
操作结果:复数C1除以复数C2,用复数C返回其商。
ModulusComplex(C, &e)初始条件:复数C已存在。
操作结果:求复数C的模,用e返回。
ConjugateComplex(&C, C1)初始条件:复数C1已存在。
数据结构习题集(自编)第一章绪论一、选择题1.数据结构是一门研究非数值计算的程序设计问题中的操作对象以及它们之间的()和运算的学科。
A.结构B.关系 C.运算 D.算法2.在数据结构中,从逻辑上可以把数据结构分成()。
A.动态结构和静态结构 B.紧凑结构和非紧凑结构C.线性结构和非线性结构 D.逻辑结构和存储结构3.线性表的逻辑顺序和存储顺序总是一致的,这种说法()。
A.正确B.不正确 C.无法确定 D.以上答案都不对4.算法分析的目的是()。
A.找出算法的合理性 B.研究算法的输人与输出关系C.分析算法的有效性以求改进 D.分析算法的易懂性5. 算法的时间复杂度取决于()A.问题的规模B待处理数据的初态 C. A和B6.一个算法应该是()。
A.程序B.问题求解步骤的描述C.要满足五个基本特性 D.A和C.7. 下面关于算法说法错误的是()A.算法最终必须由计算机程序实现B.为解决某问题的算法与为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的8.以下与数据的存储结构无关的术语是()。
A.循环队列 B. 链表 C. 哈希表 D. 栈9.在下面的程序段中,对x的赋值语句的频度为()for(i=0;i<n;i++)for(j=0;j<n;j++)x=x+1;nA. 2n B.n C.n2 D.log210.以下数据结构中,()是非线性数据结构A.树 B.字符串 C.队列 D.栈11. 下列数据中,()是线性数据结构。
A.哈夫曼树 B.有向无环图 C. 二叉排序树 D. 栈12.以下属于逻辑结构的是()。
A.顺序表 B. 哈希表 C.有序表 D. 单链表二、填空题1、_______是信息的载体,是对客观事物的符号表示,它能够被计算机识别、存储、加工和处理,________是对能够有效的输人到计算机中并且能够被计算机处理的符号的总称。
(数据、数据)2、数据元素是数据的______,有些情况下也称为元素、结点、顶点、记录等。
数据结构各章习题及答案第一章绪论一、选择题1.组成数据的基本单位是()(A)数据项(B)数据类型(C)数据元素(D)数据变量2.数据结构是研究数据的()以及它们之间的相互关系。
(A)理想结构,物理结构(B)理想结构,抽象结构(C)物理结构,逻辑结构(D)抽象结构,逻辑结构3.在数据结构中,从逻辑上可以把数据结构分成()(A)动态结构和静态结构(B)紧凑结构和非紧凑结构(C)线性结构和非线性结构(D)内部结构和外部结构4.数据结构是一门研究非数值计算的程序设计问题中计算机的(①)以及它们之间的(②)和运算等的学科。
①(A)数据元素(B)计算方法(C)逻辑存储(D)数据映像②(A)结构(B)关系(C)运算(D)算法5.算法分析的目的是()。
(A)找出数据结构的合理性(B)研究算法中的输入和输出的关系(C)分析算法的效率以求改进(D)分析算法的易懂性和文档性6.计算机算法指的是(①),它必须具备输入、输出和(②)等5个特性。
① (A)计算方法(B)排序方法(C)解决问题的有限运算序列(D)调度方法②(A)可执行性、可移植性和可扩充性(B)可行性、确定性和有穷性(C)确定性、有穷性和稳定性(D)易读性、稳定性和安全性二、判断题1.数据的机内表示称为数据的存储结构。
()2.算法就是程序。
()3.数据元素是数据的最小单位。
()4.算法的五个特性为:有穷性、输入、输出、完成性和确定性。
()5.算法的时间复杂度取决于问题的规模和待处理数据的初态。
()三、填空题1.数据逻辑结构包括________、________、_________ 和_________四种类型,其中树形结构和图形结构合称为_____。
2.在线性结构中,第一个结点____前驱结点,其余每个结点有且只有______个前驱结点;最后一个结点______后续结点,其余每个结点有且只有_______个后续结点。
3.在树形结构中,树根结点没有_______结点,其余每个结点有且只有_______个前驱结点;叶子结点没有________结点,其余每个结点的后续结点可以_________。
数据结构第一章考试题库(含答案)数据结构第一章考试题库(含答案)一、选择题1. 以下哪种数据结构是先进先出(FIFO)的?A. 栈B. 队列C. 链表D. 哈希表答案:B2. 在队列中,元素的插入操作称为什么?A. EnqueueB. DequeueC. PushD. Pop答案:A3. 哪种数据结构是一种不允许重复元素的集合?A. 栈B. 队列C. 链表D. 集合答案:D4. 以下哪种数据结构是后进先出(LIFO)的?A. 栈B. 队列C. 链表D. 哈希表答案:A5. 使用链表实现的栈或队列的时间复杂度是多少?A. O(1)B. O(n)C. O(log n)D. O(n^2)答案:A二、填空题1. 广度优先搜索(BFS)使用的数据结构是______。
答案:队列2. 深度优先搜索(DFS)使用的数据结构是______。
答案:栈3. 在二叉树中,每个节点最多有几个子节点?答案:24. 快速排序使用的分治策略是将数组分成几个子数组进行排序?答案:25. 哈希表的平均查找时间复杂度是多少?答案:O(1)三、简答题1. 请简要解释栈和队列的区别。
答案:栈是一种后进先出(LIFO)的数据结构,只能在栈顶进行插入和删除操作;队列是一种先进先出(FIFO)的数据结构,只能在队尾插入,在队头删除。
2. 请解释什么是链表。
答案:链表是一种动态数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。
与数组不同,链表的节点在内存中可以不连续存储,通过指针来链接每个节点。
3. 请简述快速排序的思想和算法步骤。
答案:快速排序使用分治的思想,首先选择一个元素作为基准值,然后将数组划分为两个子数组,小于基准值的元素放在左侧,大于基准值的元素放在右侧。
然后对左右子数组递归地进行快速排序,直到排序完成。
4. 请解释什么是哈希表及其应用场景。
答案:哈希表是一种基于哈希函数进行查找的数据结构,通过将关键字映射到哈希表中的位置来实现高效的查找。
第一章概论 自测题答案一、填空题1. 数据结构是一门研究非数值计算的程序设计问题中计算机的 操作对象 以及它们之间的 关系 和运算等的学科。
2. 数据结构被形式地定义为(D, R ),其中D 是 数据元素 的有限集合,R 是D 上的 关系 有限集合。
3. 数据结构包括数据的 逻辑结构 、数据的 存储结构 和数据的 运算 这三个方面的内容。
4. 数据结构按逻辑结构可分为两大类,它们分别是 线性结构 和 非线性结构 。
5. 线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。
6. 在线性结构中,第一个结点 没有 前驱结点,其余每个结点有且只有 1个前驱结点;最后一个结点 没有 后续结点,其余每个结点有且只有1个后续结点。
7. 在树形结构中,树根结点没有 前驱 结点,其余每个结点有且只有 1 个前驱结点;叶子结点没有 后续 结点,其余每个结点的后续结点数可以任意多个 。
8. 在图形结构中,每个结点的前驱结点数和后续结点数可以 任意多个 。
9.数据的存储结构可用四种基本的存储方法表示,它们分别是顺序 、 链式 、 索引 和 散列 。
10. 数据的运算最常用的有5种,它们分别是插入 、 删除、修改、 查找 、排序。
11. 一个算法的效率可分为 时间 效率和 空间 效率。
二、单项选择题( B )1. 非线性结构是数据元素之间存在一种: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) 调度方法( B )6. 计算机算法必须具备输入、输出和 等5个特性。
数据结构1-3章相关测试题(含答案)《数据结构》第1教学单元测试练习题选择(60分)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、以下说法错误的是()A、线性表的元素可以是各种各样的,逻辑上相邻的元素在物理位置上不一定相邻B、在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上不一定相邻C、在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻D、线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素9、以下说法正确的是()A、在单链表中,任何两个元素的存储位置之间都有固定的联系,因为可以从头结点进行查找任何一个元素B、在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构C、顺序存储方式只能用于存储线性结构D、顺序存储方式的优点是存储密度大、且插入、删除运算效率高10、线性表L=(a1,a2,...,ai,...,an),下列说法正确的是()A、每个元素都有一个直接前驱和直接后继B、线性表中至少要有一个元素C、表中诸元素的排列顺序必须是由小到大或由大到小的D、除第一个元素和最后一个元素外其余每个元素都有一个数且仅有一个直接前驱和直接后继11、线性表若采用链表存储结构时,要求内存中可用存储单元的地址()A、必需是联系的B、部分地址必须是连续的C、一定是不连续的D、连续不连续都可以12、单链表中,增加头结点的目的是为了()A、使单链表至少有一个结点B、标示表结点中首结点的位置C、方便运算的实现D、说明单链表是线性表的链式存储实现13、带头结点的单链表Head为空的判定条件是A、Head==NullB、Head->next==NULLC、Head->next==Head14、空的单循环链表L的尾结点*P,满足A、P->next==NULLB、P==NULLC、P->next==LD、P==L15、算法的时间复杂度是指()A、执行算法程序所需要的时间B、算法执行过程中所需要的基本运算次数C、算法程序的长度D、算法程序中的指令条数16、算法的空间复杂度是指()A、执行算法程序所占的存储空间B、算法程序中的指令条数C、算法程序的长度D、算法执行过程中所需要的存储空间17、下列叙述中正确的是()A、线性表是线性结构B、栈和队列是非线性结构C、线性链表是非线性结构D、二叉树是线性结构18、数据的存储结构是指()A、数据所占的存储空间量B、数据的逻辑结构在计算机中的表示C、数据在计算机中的顺序存储方式D、存储在外存中的数据19、下列属于线性数据结构的是()A、队列B、树C、图D、不确定20、单链表的每个结点中包括一个指针next,它指向该结点的后继结点。
数据结构练习题第一部分绪论一、单选题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教学单元测试练习题
选择(60分)
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、以下说法错误的是()
A、线性表的元素可以是各种各样的,逻辑上相邻的元素在物理位置上不一定相邻
B、在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上不一定相邻
C、在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻
D、线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素
9、以下说法正确的是()
A、在单链表中,任何两个元素的存储位置之间都有固定的联系,因为可以从头结点进行查找任何一个元素
B、在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取
的存储结构
C、顺序存储方式只能用于存储线性结构
D、顺序存储方式的优点是存储密度大、且插入、删除运算效率高
10、线性表L=(a1,a2,...,ai,...,an),下列说法正确的是( )
A、每个元素都有一个直接前驱和直接后继
B、线性表中至少要有一个元素
C、表中诸元素的排列顺序必须是由小到大或由大到小的
D、除第一个元素和最后一个元素外其余每个元素都有一个数且仅有一个直接前驱和直接后继
11、线性表若采用链表存储结构时,要求内存中可用存储单元的地址( )
A、必需是联系的
B、部分地址必须是连续的
C、一定是不连续的
D、连续不连续都可以
12、单链表中,增加头结点的目的是为了( )
A、使单链表至少有一个结点
B、标示表结点中首结点的位置
C、方便运算的实现
D、说明单链表是线性表的链式存储实现
13、带头结点的单链表Head为空的判定条件是
A、Head==Null
B、Head->next==NULL
C、Head->next==Head
14、空的单循环链表L的尾结点*P,满足
A、P->next==NULL
B、P==NULL
C、P->next==L
D、P==L
15、算法的时间复杂度是指()
A、执行算法程序所需要的时间
B、算法执行过程中所需要的基本运算次数
C、算法程序的长度
D、算法程序中的指令条数
16、算法的空间复杂度是指()
A、执行算法程序所占的存储空间
B、算法程序中的指令条数
C、算法程序的长度
D、算法执行过程中所需要的存储空间
17、下列叙述中正确的是()
A、线性表是线性结构
B、栈和队列是非线性结构
C、线性链表是非线性结构
D、二叉树是线性结构
18、数据的存储结构是指()
A、数据所占的存储空间量
B、数据的逻辑结构在计算机中的表示
C、数据在计算机中的顺序存储方式
D、存储在外存中的数据
19、下列属于线性数据结构的是( )
A、队列
B、树
C、图
D、不确定
20、单链表的每个结点中包括一个指针next,它指向该结点的后继结点。
现要将指针q指向的新结点插入到指针P指向的单链表结点之后,下面的操作序列中哪一个是正确的?( ) A、P->link = q-> link; q = p-> link; B、P-> link = q; q-> link = p-> link;
C、q-> link = p-> link; p-> link =q;
D、q = p-> link; p-> link = q-> link;
21、在一个单链表中,若删除p所指结点的后续结点,则执行( )
A、p->link=p-> link -> link;
B、p=p-> link; p-> link =p-> link -> link;
C、p-> link =p-> link;
D、p=p-> link -> link;
22、循环链表指( )
A、最后一个节点的指针域总是指向链表头
B、可以自由膨胀的链表
C、链表含有指向上一级节点的指针域
D、都不是
23、如果以链表作为栈的存储结构,则退栈操作时( )
A、必须判别栈是否满
B、判别栈元素的类型
C、必须判别栈是否空
D、队栈不做任何判别
24、设有一顺序栈S,元素s1,s2,s3,s4,s5,s6依次进栈,如果6个元素出线的顺序是s2,s3,s4, s6 , s5,s1,则栈的容量至少应该是()A、2 B、3 C、5 D、6
25、设有一顺序栈已含3个元素,如下图所示,元素a4正等待进栈。
那么下列4个序列
中不可能出现的出栈序列是()
A、a3,a1,a4,a2
B、a3,a2,a4,a1
C、a3,a4,a2,a1
D、a4,a3,a2,a1
26、一个栈的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是()
A、e d c b a
B、d e c b a
C、d c e a b
D、a b c d e
27、一个队列的入队列顺序是1,2,3,4,则队列的输出系列是()
A、4,3,2,1
B、1,2,3,4
C、1,4,3,2
D、3,2,4,1
28、若一个栈的输入序列是1、2……N,输出序列的第一个元素是N,则第I个输出元素为()
A、N-I
B、I
C、N-I+1
D、N-I-1
29、队列操作的原则是()
A、先进先出
B、后进先出
C、只能进行插入
D、只能进行删除
30、数据结构中,与所使用的计算机无关的是数据的( C )
A) 存储结构B) 物理结构
C) 逻辑结构D) 物理和存储结构
二、填空题(13分)
1、循环链表与单链表的区别仅仅在于其尾结点的链域值不是__空(NULL)__,而是一个指向_头指针__的指针。
2、在单链表中若在每个结点中增加一个指针域,所含指针指向前驱结点,这样构成的链表中有两个方向不同的链,称为___双向链表___。
3、带头结点的单链表H为空的条件是_H->next=NULL_。
不带头结点的单链表H为空的条件是H=NULL
4、非空单循环链表L中*p是尾结点的条件是__p->next=L____。
5、在一个单链表中p所指结点之后插入一个由指针s所指结点,应执行s->link=_p->link__;和p->link=__s_的操作。
6、在一个单链表中p所指结点之前插入一个由指针s所指结点,可依次执行以下操作:s-> link =__ p->link _; p-> link =s; t=p->data; p->data=__s->data__; s->data=_t_;
7、在长度为n的顺序表中插入一个元素,最坏情况需要移动表中的__n_个元素。
8、线性表的存储结构主要有顺序存储和链式存储,队列是一种特殊的线性表,循环队列是队列的__顺序_存储结构
9、栈的操作特点是;队列的操作特点是
三、判断题(7分)
1、在顺序表中取出第i个元素所花费的时间与i成正比(X )
2、线性表的长度是线性表所占用的存储空间的大小(X )
3、在对不带头结点的链队列作出队列操作时,不会改变front指针的值(X )
4、已知指针P指向链表L中某结点,执行语句P=P->link不会删除该链表中结点(√)
5、在链队列中,即便不设置尾指针也能进行入队列操作(√)
6、栈和队列都是运算受限的线性表(√)
7、在带头结点的单循环链表中,任一结点的后继指针均不空(√)
四、阅读算法,写出结果(20分)。