数据结构1-3章相关测试题(含答案)
智慧树知到《数据结构》章节测试答案

第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-3习题答案

试编写程序完成: 15个学生 个学生, 3.2 试编写程序完成:有15个学生,每个学生的 信息包括学号、姓名、性别、年龄、班级和3 信息包括学号、姓名、性别、年龄、班级和3 门课程成绩,从键盘输入15个学生的信息, 15个学生的信息 门课程成绩,从键盘输入15个学生的信息,要 求打印出3门课程的总平均成绩, 求打印出3门课程的总平均成绩,以及最高分 的学生的信息(包括学号、姓名、性别、年龄、 的学生的信息(包括学号、姓名、性别、年龄、 班级、 门课程成绩、平均分)。 班级、3门课程成绩、平均分)。
判断下述计算过程是否是一个算法: 2.4 判断下述计算过程是否是一个算法: Step1: 开始 Step2: n<=0; Step3: n=n+1; 重复步骤3; Step4: 重复步骤3; 结束; Step5: 结束; 该计算过程不是一个算法, 答:该计算过程不是一个算法,因为其不满足算法的 有穷性。 有穷性。
在下面两列中,左侧是算法(关于问题规模) 2.8 在下面两列中,左侧是算法(关于问题规模) 的执行时间,右侧是一些时间复杂度。 的执行时间,右侧是一些时间复杂度。请用连 线的方式表示每个算法的时间复杂度。 线的方式表示每个算法的时间复杂度。 100n3 6n2-12n+1 1024 n+2log2n n(n+1)(n+2)/6 2n+1+100n
线 性 表 存 储 方 式
顺序存储:初始化、插入、删除、 顺序存储:初始化、插入、删除、查找运算
: 存 插入、删除 插入、
存储:初始化、插入、删除、 存储:初始化、插入、 Nhomakorabea除、查找运算
:插入、删除 插入、 存储
存
重点:熟练掌握顺序表和单链表上实现的各种 重点: 基本算法及相关的时间性能分析 难点: 难点:能够使用本章所学到的基本知识设计有 效算法解决与线性表相关的应用问题。 效算法解决与线性表相关的应用问题。
数据结构各章习题及答案

数据结构习题及解答第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-4章习题答案

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