数据结构习题及答案.docx

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

数据结构习题及答案.docx

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

数据结构习题及答案.docx

数据结构习题及答案

第1章绪论

一、选择题

1.算法的计算量的大小称为计算的()。

A.效率B.复杂性C.现实性D.难度

2.一个算法是()。

A.程序B.问题求解步骤的描述C.要满足五个基本特性D.A和C

3.从逻辑上可以把数据结构分为()两大类。

A.动态结构、静态结构B.顺序结构、链式结构

C.线性结构、非线性结构D.初等结构、构造型结构

二、判断题

1.数据元素是数据的最小单位。

()

2.数据的逻辑结构是指数据的各数据项之间的逻辑关系;()

3.算法的优劣与算法描述语言无关,但与所用计算机有关。

()

4.健壮的算法不会因非法的输入数据而出现莫名其妙的状态。

()

5.算法可以用不同的语言描述,如果用C语言来描述,则算法实际上就是程序了。

()

6.顺序存储方式的优点是存储密度大,且插入、删除运算效率高。

()

三、填空

1.数据的物理结构包括数据元素的表示和的表示。

2.对于给定的n个元素,可以构造出的四种逻辑结构有:

集合、和图状结构。

3.数据的逻辑结构是指。

4.一个数据结构在计算机中称为存储结构。

5.数据结构中评价算法的两个重要指标是。

6.一个算法具有5个特性:

、有零个或多个输入、有一个或多个输出。

7.计算机执行下面的语句时,语句s的执行次数为_______。

for(i=l;i

for(j=n;j>=i;j--)

s;

8.下面程序段的时间复杂度为________。

(n>1)

sum=1;for(i=0;sum

四、应用题

1.数据结构是一门研究什么内容的学科?

2.回答问题

(1)在数据结构课程中,数据的逻辑结构,数据的存储结构及数据的运算之间存在着怎样的关系?

(2)若逻辑结构相同但存储结构不同,则为不同的数据结构。

这样的说法对吗?

举例说明。

3.数据结构与数据类型有什么区别?

4.有下列运行时间函数:

(1)T1(n)=1000;2)T2(n)=n2+1000n;(3)T3(n)=3n3+100n2+n+1;

分别写出相应的大O表示的运算时间。

第2章线性表

一选择题

1.下述哪一条是顺序存储结构的优点?

()

A.存储密度大B.插入运算方便C.删除运算方便D.可方便地用于各种逻辑结构的存储表示

2.下面关于线性表的叙述中,错误的是哪一个?

()

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

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

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

D.线性表采用链接存储,便于插入和删除操作。

3.线性表是具有n个()的有限序列(n>0)。

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

4.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。

A.顺序表B.双链表C.带头结点的双循环链表D.单循环链表

5.链表不具有的特点是()

A.插入、删除不需要移动元素B.可随机访问任一元素

C.不必事先估计存储空间D.所需空间与线性长度成正比

6.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为()(1<=i<=n+1)。

A.O(0)B.O

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

7.对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为()。

A.O(n)O(n)B.O(n)O

(1)C.O

(1)O(n)D.O

(1)O

(1)

8.线性表(a1,a2,…,an)以链式方式存储时,访问第i位置元素的时间复杂性为()

A.O(i)B.O

(1)C.O(n)D.O(i-1)

9.在单链表指针为p的结点之后插入指针为s的结点,正确的操作是:

()。

A.p->next=s;s->next=p->next;B.s->next=p->next;p->next=s;

C.p->next=s;p->next=s->next;D.p->next=s->next;p->next=s;

10.对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是()

A.head==NULLB.head->next==NULLC.head->next==headD.head!

=NULL

二、判断题

1.线性表采用链表存储时,结点和结点内部的存储空间可以是不连续的。

()

2.对任何数据结构链式存储结构一定优于顺序存储结构。

()

3.集合与线性表的区别在于是否按关键字排序。

()

4.线性表的特点是每个元素都有一个前驱和一个后继。

()

5.循环链表不是线性表.()

6.线性表就是顺序存储的表。

()

三、填空题

1.线性表L=(a1,a2,…,an)用数组表示,假定删除表中任一元素的概率相同,则删除一个元素平均需要移动元素的个数是________。

2.在一个长度为n的顺序表中第i个元素(1<=i<=n)之前插入一个元素时,需向后移动________个元素。

3.一个具有n个结点的单链表,在已知的结点后插入一个新结点的时间复杂度为_______。

4.一个具有n个结点的单链表,在给定值的结点后插入一个新结点的时间复杂度为_____。

5.顺序存储结构是通过________表示元素之间关系的;链式存储结构是通过指针表示元素之间关系的。

6.已知指针p指向单链表L中的某结点,则删除其后继结点的语句是:

________

7.在单链表L中,指针p所指结点有后继结点的条件是:

__。

四、应用题

1.线性表有两种存储结构:

一是顺序表,二是链表。

试问:

(1)如果有n个线性表同时并存,并且在处理过程中各表的长度会动态变化,线性表的总数也会自动地改变。

在此情况下,应选用哪种存储结构?

为什么?

(2)若线性表的总数基本稳定,且很少进行插入和删除,但要求以最快的速度存取线性表中的元素,那么应采用哪种存储结构?

为什么?

2.线性表的顺序存储结构具有三个弱点:

其一,在作插入或删除操作时,需移动大量元素;其二,由于难以估计,必须预先分配较大的空间,往往使存储空间不能得到充分利用;其三,表的容量难以扩充。

线性表的链式存储结构是否一定都能够克服上述三个弱点,试讨论之。

3.线性表(a1,a2,…,an)用顺序映射表示时,ai和ai+1(1<=i

链接表示时呢?

4.设单链表结点指针域为next,试写出删除链表中指针p所指结点的直接后继的C语言语句。

五、算法设计题

1.假设有两个按元素值递增次序排列的线性表,均以单链表形式存储。

请编写算法将这两个单链表归并为一个按元素值递减次序排列的单链表,并要求利用原来两个单链表的结点存放归并后的单链表。

2.已知非空线性链表由list指出,链结点的构造为(data,next).请写一算法,将链表中数据域值最小的那个链结点移到链表的最前面。

要求:

不得额外申请新的链结点。

3.设有一个由正整数组成的无序(向后)单链表,编写完成下列功能的算法:

(1)找出最小值结点,且打印该数值;

(2)若该数值是奇数,则将其与直接后继结点的数值交换;

(3)若该数值是偶数,则将其直接后继结点删除。

第3章栈和队列

一、选择题

1.对于栈操作数据的原则是()。

A.先进先出B.后进先出C.后进后出D.不分顺序

2.一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是()。

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

3.若一个栈的输入序列为1,2,3,…,n,输出序列的第一个元素是i,则第j个输出元素是()。

A.i-j-1B.i-jC.j-i+1D.不确定的

4.有六个元素6,5,4,3,2,1的顺序进栈,问下列哪一个不是合法的出栈序列?

()

A.543612B.453126C.346521D.234156

5.输入序列为ABC,可以变为CBA时,经过的栈操作为()

A.push,pop,push,pop,push,popB.push,push,push,pop,pop,pop

C.push,push,pop,pop,push,popD.push,pop,push,push,pop,pop

6.若栈以向量V[1..n]存储,初始栈顶指针top为n+1,则下面x进栈的正确操作是()。

A.top:

=top+1;V[top]:

=xB.V[top]:

=x;top:

=top+1

C.top:

=top-1;V[top]:

=xD.V[top]:

=x;top:

=top-1

7.若栈采用顺序存储方式存储,现两栈共享空间V[1..m],top[i]代表第i个栈(i=1,2)栈顶,栈1的底在v[1],栈2的底在V[m],则栈满的条件是()。

A.|top[2]-top[1]|=0B.top[2]+1=top[1]C.top[1]+top[2]=mD.top[1]=top[2]

8.一个递归算法必须包括()。

A.递归部分B.终止条件和递归部分C.递推部分D.终止条件和递推部分

9.设计一个判别表达式中左,右括号是否配对出现的算法,采用()数据结构最佳。

A.线性表的顺序存储结构B.队列C.线性表的链式存储结构D.栈

10.用链式方式存储的队列,在进行删除运算时()。

A.仅修改头指针B.仅修改尾指针C.头、尾指针都要修改D.头、尾指针可能都要修改

11.假设以数组A[m]存放循环队列的元素,其头尾指针分别为front和rear,则当前队列中的元素个数为()。

A.(rear-front+m)%mB.rear-front+1C.(front-rear+m)%mD.(rear-front)%m

12.最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是()。

A.(rear+1)%n=frontB.rear=frontC.rear+1=frontD.(rear-l)%n=front

13.设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5和e6依次通过栈S,一个元素出栈后即进队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,e1则栈S的容量至少应该是()。

A.6B.4C.3D.2

14.某个车站呈狭长型,宽度只能容下一辆车,并且只有一个出入口。

已知某时刻该车站状态为空,从这一时刻开始的出入纪录为:

“进,出,进,进,进,出,出,进,进,进,出,出”。

假设车辆入站的顺序为1,2,3,……,则车辆出站的顺序为()。

A.1,2,3,4,5 B.1,4,3,7,6  C.1,2,4,5,7   D.1,4,3,7,2

二、判断题

1.两个栈共享一片连续内存空间时,为提高内存利用率,减少溢出机会,应把两个栈的栈底分别设在这片内存空间的两端。

()

2.即使对不含相同元素的同一输入序列进行两组不同的合法的入栈和出栈组合操作,所得的输出序列也一定相同。

()

3.若输入序列为1,2,3,4,5,6,则通过一个栈可以输出序列3,2,5,6,4,1。

()

4.栈和队列都是限制存取点的线性结构。

()

5.只有那种使用了局部变量的递归过程在转换成非递归过程时才必须使用栈。

(  )

6.队列是一种插入与删除操作分别在表的两端进行的线性表,是一种先进后出型结构。

()

7.循环队列也存在空间溢出问题。

()

三、填空题

1._______是限定仅在表尾进行插入或删除操作的线性表。

2.一个栈的输入序列是:

1,2,3则不可能的栈输出序列是_______。

3.设有一个空的顺序栈,栈顶指针为1000H,现有输入序列为1,2,3,4,5,经过PUSH,PUSH,POP,PUSH,POP,PUSH,PUSH之后,栈顶指针值是_______H。

每个元素占4个字节。

4.用I表示入栈操作,O表示出栈操作,若元素入栈的顺序为1234,为了得到1342出栈顺序,相应的I和O的操作串为_______。

5.循环队列的引入,目的是为了克服_______。

6.设循环队列用数组A[1..M]表示,队首、队尾指针分别是front和rear,判定队满的条件为_______。

7.设循环队列存放在向量sq.data[0..M]中,则队头指针sq.front在循环意义下的出队操作可表示为_______。

四、应用题

1.有5个元素,其入栈次序为:

A,B,C,D,E,在各种可能的出栈次序中,以元素C,D最先出栈(即C第一个且D第二个出栈)的次序有哪几个?

2.设一数列的输入顺序为123456,若采用栈结构,并以I和O分别表示入栈和出栈操作,试问通过入出栈操作的合法序列。

(1)能否得到输出顺序为325641的序列。

(2)能否得到输出顺序为154623的序列。

3.用一个数组S(设大小为MAX)作为两个堆栈的共享空间。

请说明共享方法,栈满/栈空的判断条件,并用C语言写出入栈的操作。

五算法设计题

1.假设以I和O分别表示入栈和出栈操作。

栈的初态和终态均为空,入栈和出栈的操作序列可表示为仅由I和O组成的序列,称可以操作的序列为合法序列,否则称为非法序列。

(1)下面所示的序列中哪些是合法的?

A.IOIIOIOOB.IOOIOIIOC.IIIOIOIOD.IIIOOIOO

(2)通过对

(1)的分析,写出一个算法,判定所给的操作序列是否合法。

若合法,返回true,否则返回false(假定被判定的操作序列已存入一维数组中)。

2.请利用两个栈S1和S2来模拟一个队列。

已知栈的三个运算定义如下:

PUSH(ST,x):

元素x入ST栈;POP(ST,x):

ST栈顶元素出栈,赋给变量x;Sempty(ST):

判ST栈是否为空。

那么如何利用栈的运算来实现该队列的三个运算:

enqueue:

插入一个元素入队列;dequeue:

删除一个元素出队列;queue_empty:

判队列为空。

(请写明算法的思想及必要的注释)

3.试将下列递归过程改写为非递归过程。

voidtest(int&sum)

{intx;

scanf(x);

if(x=0)sum=0else{test(sum);sum+=x;}

printf(sum);

}

第4章串

一、选择题

1.下面关于串的的叙述中,哪一个是不正确的?

()

A.串是字符的有限序列B.空串是由空格构成的串

C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储

2.若串S1=‘ABCDEFG’,S2=‘9898’,S3=‘###’,S4=‘012345’,执行concat(replace

(S1,substr(S1,length(S2),length(S3)),S3),substr(S4,index(S2,‘8’),length(S2)))

其结果为()

A.ABC###G0123B.ABCD###2345C.ABC###G1234D.ABC###G2345

3.设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为()

A.求子串B.联接C.匹配D.求串长

4.模式串t=‘abcaabbca’,该模式串的next数组的值为()。

A.011122111B.011121211

C.011100131D.011122311

5.串的长度是指()

A.串中所含不同字母的个数B.串中所含字符的个数

C.串中所含不同字符的个数D.串中所含非空格字符的个数

二、判断题

1.KMP算法的特点是在模式匹配时指示主串的指针不会变小。

()

2.设模式串的长度为m,目标串的长度为n,当n≈m且处理只匹配一次的模式时,朴素的匹配(即子串定位函数)算法所花的时间代价可能会更为节省。

()

3.串是一种数据对象和操作都特殊的线性表。

()

二、填空题

1.组成串的数据元素只能是________。

2.INDEX(‘DATASTRUCTURE’,‘STR’)=________。

3.设正文串长度为n,模式串长度为m,则串匹配的KMP算法的时间复杂度为________。

4.设T和P是两个给定的串,在T中寻找等于P的子串的过程称为模式匹配,称P为____。

5.串是一种特殊的线性表,其特殊性表现在____。

6.串的两种最基本的存储方式是____。

7.两个字符串相等的充分必要条件是_______。

第5章数组和广义表

一、选择题

1.设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为()。

A.13B.33C.18D.40

2.若对n阶对称矩阵A以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1..(n(n+1))/2]中,则在B中确定aij(i

A.i*(i-1)/2+jB.j*(j-1)/2+iC.i*(i+1)/2+jD.j*(j+1)/2+i

3.有一个100*90的稀疏矩阵,非0元素有10个,设每个整型数占2字节,则用三元组表示该矩阵时,所需的字节数是()。

A.60B.66C.18000D.33

4.对稀疏矩阵进行压缩存储目的是()。

A.便于进行矩阵运算B.便于输入和输出C.节省存储空间D.降低运算的时间复杂度

5.广义表((a,b,c,d))的表头是()。

A.aB.()C.(a,b,c,d)D.(b,c,d)

6.广义表((a,b,c,d))的表尾是()。

A.aB.()C.(a,b,c,d)D.(b,c,d)

7.设广义表L=((a,b,c)),则L的长度和深度分别为()。

A.1和1B.1和3C.1和2D.2和3

8.下面说法不正确的是()。

A.广义表的表头总是一个广义表B.广义表的表尾总是一个广义表

C.广义表难以用顺序存储结构D.广义表可以是一个多层次的结构

二、判断题

1.从逻辑结构上看,n维数组的每个元素均属于n个向量。

()

2.稀疏矩阵压缩存储后,必会失去随机存取功能。

()

3.数组是同类型值的集合。

()

4.数组可看成线性结构的一种推广,与线性表一样,可以对它进行插入,删除等操作。

()

5.一个稀疏矩阵Am*n采用三元组形式表示,若把三元组中有关行下标与列下标的值互换,并把m和n的值互换,则就完成了Am*n的转置运算。

()

6.二维以上的数组其实是一种特殊的广义表。

()

7.若一个广义表的表头为空表,则此广义表亦为空表。

()

8.广义表中的元素或者是一个不可分割的原子,或者是一个非空的广义表。

()

9.广义表的同级元素(直属于同一个表中的各元素)具有线性关系。

()

三、填空题

1.数组的存储结构采用_______存储方式。

2.二维数组a[4][5][6](下标从0开始计,a有4*5*6个元素),每个元素的长度是2,则a[2][3][4]的地址是____。

(设a[0][0][0]的地址是1000,数据以行为主方式存储)

3.己知三对角矩阵A【1..9,1..9】的每个元素占2个单元,现将其三条对角线上的元素逐行存储在起始地址为1000的连续的内存单元中,则元素A[7,8]的地址为______。

4.所谓稀疏矩阵指的是_______。

5.当广义表中的每个元素都是原子时,广义表便成了_______。

第6章树和二叉树

一、选择题

1.已知一算术表达式的中缀形式为A+B*C-D/E,后缀形式为ABC*+DE/-,其前缀形式为()A.-A+B*C/DEB.-A+B*CD/EC.-+*ABC/DED.-+A*BC/DE

2.设树T的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1则T中的叶子数为()A.5B.6C.7D.8

3.在下述结论中,正确的是()

①只有一个结点的二叉树的度为0;②二叉树的度为2;③二叉树的左右子树可任意交换;④深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。

A.①②③B.②③④C.②④D.①④

4.设森林F对应的二叉树为B,它有m个结点,B的根为p,p的右子树结点个数为n,森林F中第一棵树的结点个数是()

A.m-nB.m-n-1C.n+1D.条件不足,无法确定

5.一棵完全二叉树上有1001个结点,其中叶子结点的个数是()

A.250B.254C.500D.501

6.设给定权值总数有n个,其哈夫曼树的结点总数为()

A.不确定B.2nC.2n+1D.2n-1

7.有关二叉树下列说法正确的是()

A.二叉树的度为2B.一棵二叉树的度可以小于2

C.二叉树中至少有一个结点的度为2D.二叉树中任何一个结点的度都为2

8.二叉树的第I层上最多含有结点数为()

A.2IB.2I-1-1C.2I-1D.2I-1

9.一个具有1025个结点的二叉树的高h为()

A.11B.10C.11至1025之间D.10至1024之间

10.一棵二叉树高度为h,所有结点的度或为0,或为2,则这棵二叉树最少有()结点

A.2hB.2h-1C.2h+1D.h+1

11.一棵具有n个结点的完全二叉树的树高度(深度)是()

A.log2n+1B.log2n+1C.log2nD.log2n-1

12.深度为h的满m叉树的第k层有()个结点。

(1=

A.mk-1B.mk-1C.mh-1D.mh-1

13.高度为K的二叉树最大的结点数为()。

A.2kB.2k-1C.2k-1D.2k-1-1

14.一棵树高为K的完全二叉树至少有()个结点

A.2k–1B.2k-1–1C.2k-1D.2k

15.将有关二叉树的概念推广到三叉树,则一棵有244个结点的完全三叉树的高度()

A.4B.5C.6D.7

16.对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左、右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,可采用()次序的遍历实现编号。

A.先序B.中序C.后序D.从根开始按层次遍历

17.树的后根遍历序列等同于该树对应的二叉树的().

A.先序序列B.中序序列C.后序序列D从根开始按层次遍历

18.若二叉树采用二叉链表存储结构,要交换其所有分支结点左、右子树的位置,利用()遍历方法最合适。

A.前序B.中序C.后序D.按层次

19.在下列存储形式中,哪一个不是树的存储形式?

()

A.双亲表示法B.孩子链表表示法C.孩子兄弟表示法D.顺序存储表示法

20.二叉树的先序遍历和中序遍历如下:

先序遍历:

EFHIGJK;中序遍历:

HFIEJKG。

该二叉树根的右子树的根是:

A、EB、F C、G D、H

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

当前位置:首页 > 医药卫生 > 基础医学

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

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