数据结构复习题及答案.docx

上传人:b****6 文档编号:5959342 上传时间:2023-01-02 格式:DOCX 页数:31 大小:36.73KB
下载 相关 举报
数据结构复习题及答案.docx_第1页
第1页 / 共31页
数据结构复习题及答案.docx_第2页
第2页 / 共31页
数据结构复习题及答案.docx_第3页
第3页 / 共31页
数据结构复习题及答案.docx_第4页
第4页 / 共31页
数据结构复习题及答案.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

数据结构复习题及答案.docx

《数据结构复习题及答案.docx》由会员分享,可在线阅读,更多相关《数据结构复习题及答案.docx(31页珍藏版)》请在冰豆网上搜索。

数据结构复习题及答案.docx

数据结构复习题及答案

客观题

第一章绪论

一、判断题

(1)数据的逻辑结构与数据元素本身的内容和形式无关。

T

(2)数据元素是数据的最小单位。

F

(3)算法是对解题方法和步骤的描述。

T

(4)程序和算法原则上没有区别,在讨论数据结构时可以通用。

F

(5)从逻辑关系上讲,数据结构主要分为线性结构和非线性结构两类。

T

(6)数据的存储结构是数据的逻辑结构的存储映像。

T

二、选择题

(l)数据结构通常是研究数据的(A)及它们之间的相互联系。

A.存储结构和逻辑结构B.存储和抽象C.联系和抽象D.联系与逻辑

(2)下列与数据元素有关的叙述中错误的是(A)。

A.数据元素是有独立含义的数据最小单位B.数据元素是描述数据的基本单位

C.数据元素可以称做结点D.数据元素可以称做记录

(3)数据结构中,在逻辑上可以把数据结构分成:

(C)。

A.动态结构和静态结构B.紧凑结构和非紧凑结构

C.线性结构和非线性结构D.内部结构和外部结构

(4)数据在计算机存储器内表示时,物理地址和逻辑地址相同并且是连续的,称之为()。

A.存储结构B.逻辑结构C.顺序存储结构D.链式存储结构

(5)非线性结构的数据元素之间存在(D)。

A.一对一关系B.一对多关系C.多对多关系D.B或C

(6)在非线性结构中,每个结点(D)。

A.无直接前驱

B.只有一个直接前驱和个数不受限制的直接后继

C.只有一个直接前驱和直接后继

D.有个数不受限制的直接前驱和直接后继

(7)除了考虑存储数据结构本身所占用的空间外,实现算法所用的辅助空间的多少称为算法的(B)。

A.时间效率B.空间效率C.硬件效率D.软件效率

(8)以下属于顺序存储结构优点的是(A)。

A.存储密度大B.插入运算方便C.删除运算方便

D.可方便地用于各种逻辑结构的存储表示

(9)数据结构研究的内容是(D)。

A.数据的逻辑结构B.数据的存储结构

C.建立在相应逻辑结构和存储结构上的算法D.包括以上三个方面

(10)链式存储的存储结构所占存储空间(A)。

A.分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针

B.只有一部分,存放结点值

C.只有一部分,存储表示结点间关系的指针

D.分两部分,一部分存放结点值,另一部分存放结点所占单元数

(11)一个正确的算法应该具有5个特性,除输入、输出特性外,另外3个特性是(A)。

A.确定性、可行性、有穷性B.易读性、确定性、有效性

C.有穷性、稳定性、确定性D.可行性、易读性、有穷性

(12)以下关于数据的逻辑结构的叙述中正确的是(A)。

A.数据的逻辑结构是数据间关系的描述

B.数据的逻辑结构反映了数据在计算机中的存储方式

C.数据的逻辑结构分为顺序结构和链式结构

D.数据的逻辑结构分为静态结构和动态结构

(13)设问题的规模为n,分析以下程序段:

k=n;/*n>l*/

m=0;

while(k>=(m+l)*(m-l))

m++;

以上程序段的算法时间复杂度是()

A.O(n)B.O

(1)C.O()D.O(n2)

(14)设问题的规模为n,分析以下程序段:

a=10;

b=l00;

while(b>0)

{a++;b――;}

以上程序段的算法时间复杂度是()。

A.O(n)B.O

(1)C.O()D.O(n2)

(15)设语句s=s+i的时间是单位时间,则语句:

s=0;

for(i=l;i<=n;i++)

s=s+i;

的时间复杂度为:

()。

A.O(l)B.O(n)C.O(n2)D.O(n3)

(16)算法分析的主要任务是(C)。

A.探讨算法的正确性和可读性B.探讨数据组织方式的合理性

C.为给定问题寻找一种性能良好的解决方案D.研究数据之间的逻辑关系

(17)以下叙述中正确的是(C)。

A.顺序存储方式只能用于存储线性结构

B.链式存储方式只能用于存储线性结构,探讨数据组织方式的合理性,研究数据之间的逻辑关系

C.顺序存储和链式存储都可以用于线性和非线性结构

D.以上三种都不对

(18)以下叙述中正确的是(C)。

A.数据元素是数据处理的最小单位B.数据项是数据处理的基本单位

C.关键字是能够惟一标识一个数据元素的数据项D.数据结构和数据类型的概念是等价的

第二章线性表

一、判断题

(l)线性表的链式存储结构优于顺序存储。

(2)链表的每个结点都恰好包含一个指针域。

(3)线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此属于同一数

据对象。

(4)在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上并不一定相邻。

(5)在单链表中,任何两个元素的存储位置之间都有固定的联系,所以可以从头结点开始查找任何一个

元素。

(6)在线性表的顺序结构中,插入和删除元素时,移动元素的个数与该元素的位置有关。

(7)顺序存储方式的优点是存储密度大,插入、删除效率高。

(8)在单链表中,要取得某个元素,只要知道该元素的指针即可,因此单链表是随机存取的存储结构。

(9)顺序存储的线性表可以实现随机存取。

(10)线性表链式存储的特点是可以用一组任意的存储单元存储表中的数据元素。

二、选择题

(1)线性表是()

A.一个有限序列,可以为空B.一个有限序列,不可以为空

C.一个无限序列,可以为空D.一个无限序列,不可以为空

(2)一维数组与线性表的特征是()。

A.前者长度固定,后者长度可变B.两者长度均固定

C.后者长度固定,前者长度可变D.两者长度均可变

(3)用单链表方式存储的线性表,存储每个结点需要两个域,一个数据域,另一个是().

A.当前结点所在地址域B.指针域C.空指针域D.空闲域

(4)用链表表示线性表的优点是()。

A.便于随机存取B.便于进行插入和删除操作

C.占用的存储空间较顺序表少D.元素的物理顺序与逻辑顺序相同

(5)在具有n个结点的单链表中,实现___的操作,其算法的时间复杂度都是O(n)。

A.遍历链表和求链表的第i个结点B.在地址为P的结点之后插入一个结点

C.删除开始结点D.删除地址为P的结点的后继结点

(6)下面关于线性表的叙述中,错误的是()。

A.线性表采用顺序存储必须占用一片连续的存储单元

B.线性表采用顺序存储便于进行插入和删除操作

C.线性表采用链式存储不必占用一片连续的存储单元

D.线性表采用链式存储便于进行插入和删除操作

(7)已知单链表的每个结点包括一个指针域next,它指向该结点的后继结点。

现要将指针q指向的新结点插入到指针p指向的结点之后,下面的操作序列中正确的是()。

A.q=p一>next;p一>next=q一>next;

B.p一>next=q一>next;q=p一>next;

C.q一>next=p一>next;p一>next=q;

D.p一>next=q;q一>next=p一>next;

(8)设al,a2,a3为三个结点;p,10,20代表地址,则如下的链表存储结构称为______。

A.链表B.单链表C.双向循环链表D.双向链表

(9)单链表的存储密度()。

A.大于1B.等于1C.小于1D.不能确定

(10)己知一个顺序存储的线性表,设每个结点需占m个存储单元,若第一个结点的地址al,则第i个结点的地址为()。

A.al+(i-1)*mB.al+i*mC.al-i*mD.al+(i+1)*m

(11)在n个结点的顺序表中,算法的时间复杂度是O(l)的操作是()。

A.访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n)

B.在第i个结点之后插入一个新结点(1≤i≤n-1)

C.删除第i个结点(1≤i≤n)

D.将n个结点从小到大排序

(12)在线性表中()只有一个直接前驱和一个直接后继。

A.首元素B.中间元素C.尾元素D.所有元素

(13)对具有n个结点的线性表进行查找运算,所需的算法时间复杂度为()。

A.0(n2)B.0(nlog2n)C.O(log2n)D.O(n)

(14)线性表采用顺序存储的缺点是()。

A.存储密度降低B.只能顺序访问

C.元素的逻辑顺序与物理顺序不一致D.插入、删除操作效率低

(15)以下链表结构中,从当前结点出发能够访问到任一结点的是()。

A.单向链表和双向链表B.双向链表和循环链表

C.单向链表和循环链表D.单向链表、双向链表和循环链表

(16)线性表是具有n个()的有限序列。

A.数据项B.数据元素C.表元素D.字符

(17)若长度为n的线性表采用链式存储结构,访问其第i个元素的算法时间复杂度为()。

A.0(l)B.0(n)C.0(n2)D.0(log2n)

(18)指针P指向循环链表L的首元素的条件是()。

A.P==LB.L->next==PC.P->next==NULLD.P->next==L

(19)指针P所指的元素是双循环链表L的尾元素的条件是()。

A.P==LB.P->prior==LC.P==NULLD.P->next==L

(20)不带头结点的单链表L为空的条件是()

A.L!

=NULLB.L==NULLC.L->next==NULLD.L->next==L

(21)带头结点的单链表L为空的条件是()

A.L!

=NULLB.L==NULLC.L->next==NULLD.L->next==L

(22)两个指针P和Q,分别指向单链表的两个元素,P所指元素是Q所指元素前驱的条件是()。

A.P->next==Q->nextB.P->next==QC.Q->next==PD.P==Q

(23)在长度为n的顺序表中,若要删除第i(1≤i≤n)个元素,则需要向前移动元素的次数为()。

A.1B.n一iC.n一i+1D.n一i一l

(24)在长度为n的顺序表中第i(1≤i≤n)个位置上插入一个元素时,为留出插入位置所需移动元素的次数为()。

A.n-iB.iC.n–i+1D.n-i-l

(25)假定己建立以下动态链表结构,且指针Pl和P2已指向如图所示的结点:

则以下可以将P2所指结点从链表中删除并释放该结点的语句组是()

A.pl->next=p2->next;free(pl);B.pl=p2;free(p2);

C.pl->next=p2->next;free(p2);D.pl=p2->next;free(p2);

(26)若已建立如图所示的单向链表:

则以下不能将s所指的结点插入到链表尾部,构成新的单向链表的语句组是()。

A.s一>next=a->next一>next;a->next->next=s;

B.a=a->next;a一>next=s;s一>next=NULL;

C.s一>next=NULL;a=a一>next;a一>next=s;

D.a=a一>next;s一>next=a一>next;a->next=s一>next;

(27)有如下函数:

Voidfun(structnode*hl,structnode*h2)

{structnode*t;

t=hl;

while(t->next!

=’\0’)

t=t一>next;t->next=h2;}

其中形参hl和h2分别指向2个不同链表的第一个结点,此函数的功能是()。

A.将链表h2接到链表h1后B.将链表h1接到链表h2后

C.找到链表hl的最后一个结点由指针返回D.将链表hl拆分成两个链表

第三章栈

一、判断题

(l)栈是运算受限制的线性表。

(2)在栈空的情况下,不能作出栈操作,否则产生溢出。

(3)栈一定是顺序存储的线性结构。

(4)空栈就是所有元素都为0的栈。

(5)不管堆栈采用何种存储结构,只要不为空,就可以任意的删除数据元素。

(6)在c语言中设顺序栈的长度为MAXLEN,则top=MAXLEN时表示栈满。

(7)一个栈的输入序列为:

A,B,C,D,可以得到输出序列:

C,A,B,D。

二、选择题

(1)设用一维数组元素a[1]-a[n]存储一个栈,令a[n]为栈底,用整型变量t指示当前栈顶位置,a[t]为栈顶元素。

当从栈中弹出一个元素时,变量t的变化为()。

A.t=t+1B.t=t-1C.t不变D.t=n

(2)有6个元素按6、5、4、3、2、1的顺序进栈,进栈过程中可以出栈,则以下可能的出栈序列是()。

A.1、4、3、5、2、6B.6、5、4、3、2、l

C.3、l、4、2、6、5D.3、6、5、4、2、l

(3)以下叙述中错误的是()。

A.栈是限制存取操作只能在一端进行的线性表

B.消除递归不是必须使用栈

C.对同一组输入序列进行合法的入、出栈操作,得到的输出序列一定相同

D.实现递归必定使用工作栈

(4)以下不属于栈的基本运算的是()。

A.删除栈顶元素B.删除栈底元素C.判断栈是否为空D.将栈置为空栈

(5)若以链表作为栈的存储结构,则退栈操作时()。

A.必须判别栈是否满B.必须判别栈元素的类型

C.必须判别栈是否空D.不用作任何判别

(6)设入栈序列是1、2、…、n,入栈过程中不允许中途出栈,则第i个输出的元素是()。

A.不确定B.iC.n-iD.n-i+1

(7)铁路调度用“栈”,假设进栈车厢编队序列为“ABC"(进栈过程中可以出栈),出栈则有许多编队序列,以下不可能出现的序列是()。

A."ABC"B."CBA"C."BAC"D."CAB"

(8)当栈中当前元素为n个,此时进行进栈运算时发生上溢,则该栈的最大容量为()。

A.n/2B.n一1C.nD.n+1

(9)在栈中存取数据的原则是()。

A.先进先出B.后进先出C.后进后出D.随意进出

(10)插入和删除只能在一端进行的线性表,称为()。

A.队列B.循环队列C.栈D.循环栈

(11)在栈中,出栈操作的时间复杂度为()。

A.O(l)B.O(log2n)C.O(n)D.O(n2)

(12)顺序栈为空的判断条件是()。

A.top==0B.top==1C.top==-1D.top==m

(13)元素A,B,C,D依次进栈以后,栈顶元素是()。

A.AB.BC.CD.D

(14)顺序栈存储空间的实现使用()存储栈元素。

A.链表B.数组C.循环链表D.变量

(15)一个顺序栈一但说明,其占用空间的大小()。

A.已固定B.可以变动C.不能固定D.动态变化

(16)链栈LS的示意图如下,栈顶元素是()。

第四章队列

一、判断题

(l)队列是限制在两端进行操作的线性表。

(2)判断顺序队列为空的标准是头指针和尾指针均指向同一个结点。

(3)在链队列做出队操作时,会改变front指针的值。

(4)在循环队列中,若尾指针rear大于头指针front,其元素个数为rear-front。

(5)队列是一种“后进先出”的线性表。

(6)在单向循环队列中,若头指针为h,那么p所指的结点为尾结点的条件是p=h。

二、选择题

(1)若用单链表来表示链队列,则应该选用()。

A.带尾指针的非循环链表B.带头指针的非循环链表

C.带尾指针的循环链表D.带头指针的循环链表

(2)设有一个空队列,若进入队列的序列为1,2,3,4,则合法的出队序列是()。

A.3,2,4,1B.4,2,3,lC.4,3,2,1D.l,2,3,4

(3)若利用数组a[0]—a[n-1]作为一个循环队列,f为当前队头元素的前一个位置,r为队尾元素的位置,假定队中元素的个数总是小于n,则当前队中元素的个数为()。

A.r一fB.n+f一rC.n+r一1D.(n+r一f)%n

(4)栈和队列都是()。

A.顺序存储的线性结构B.链式存储的线性结构

C.限制存取点的线性结构D.限制存取点的非线性结构

(5)以下不属于队列基本运算的是()。

A.从队尾插入一个新元素B.从队列中删除第i个元素

C.判断一个队列是否为空D.读取队头元素的值

(6)在队列的顺序存储结构中,会产生队列中有剩余空间,但确不能执行入队操作的“假溢出”现象,在以下几种方法中,不能解决假溢出问题的是()。

A.采用首尾相接的循环队列B.当有元素入队时,将己有元素向队头移动

C.当有元素出队时,将己有元素向队头移动D.申请新的存储单元存放入队元素

(7)设队列空间n=40:

队尾指针rear=6;队头指针front=25,则此循环队列中当前元素的数目是()。

A.19B.21C.11D.29

(8)设循环队列的队首指针用front表示,队尾指针用rear表示,则判断队空的条件是()

A.front==rearB.front+1==rearC.rear+1=frontD.rear==0

(9)设循环队列存储于数组元素a[1]—a[n]中,其队头和队尾指针分别用front和rear表示,则判断队满的条件是()。

A.(rear一1)%n==frontB.(front+1)%n==rear

C.(rear+1)%n==frontD.(front一l)%n==rear

(10)循环队列的特点之一是不会产生()。

A.上溢出B.下溢出C.队满D.假溢出

(11)设用数组data[m+l]作为循环队列q的存储空间,front为队头指针,rear为队尾指针,则执行出队操作应执行的语句是()。

A.front=front+1;B.front=(front+l)%(m+l);

C.rear=(rear+l)%m;D.front=(front+l)%m;

(12)在队列中存取数据应遵循的原则是()。

A.先进先出B.后进先出C.先进后出D.随意进出

(13)设长度为n的链队列用单循环链表表示,若只设头指针,则入队操作的时间复杂度为()。

A.O(l)B.O(log2n)C.O(n)D.O(n2)

(14)设长度为n的链队列用单循环链表示,若只设尾指针,则出队操作的时间复杂度为()。

A.O(l)B.O(log2n)C.O(n)D.O(n2)

(15)队列是限定在()进行操作的线性表。

A.中间B.队头C.队尾D.端点

(16)一个循环队列一旦说明,其占用空间的大小()。

A.已固定B.可以变动C.不能固定D.动态变化

(17)在一个顺序存储的循环队列中,队头指针指向队头元素的()位置。

A.前一个B.后一个C.后面D.当前

(18)当利用大小为n的数组顺序存储一个队列时,该队列的最后一个元素的下标为()。

A.n-2B.n-1C.nD.n+1

(19)从一个顺序循环队列中删除一个元素时,首先需要做的操作是()。

A.队头指针减1B.取出队头指针所指的元素

C.队头指针加1D.取出队尾指针所指的元素

(20)若4个元素按A,B,C,D,顺序进队Q,队头元素是()。

A.AB.BC.CD.D

第五章串

一、判断题

(1)串中任意个字符组成的子序列称为该串的子串。

(2)设S串的长度为n,子串的长度为m,那么子串定位算法的平均时间复杂度在最好情况下是

0(n+m)。

(3)在顺序存储结构中,串的插入算法是非常方便的。

(4)设有两个串s1和s2,其中s2是s1的子串,把s2在s1中首次出现的位置找出来的算法叫作求子串

的算法。

(5)空串是任意串的子串。

(6)串的长度是指串中不同字符的个数。

(7)串是n个字母的有限序列。

(8)空串不等于空白串。

(9)如果两个串含有相同的字符,则说明它们相等。

(10)如果一个串中所有的字符均在另一个串中出现,则说明前者是后者的子串。

二、选择题

(1)下面关于串的叙述中,错误的是()。

A.串是由字符组成的有限序列B.模式匹配是串的一种主要运算

C.空串是由空格组成的串D.串可以顺序存储,也可以链式存储

(2)假设有两个字符串S1和S2,其中Sl="ABCDXYZ",S2="REST",那么如果进行了下面的运算concatstr(substr(S1,3,2),Substr(S1,Strlen(S2),3)),其结果应是()。

A."CDXYZ"B."CDDXY"C."CDREST"D."CDRES"

(3)设有一个字符串S="ABC123XYZ",问该串的长度为()。

A.9B.10C.11D.12

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1