数据结构各习题.docx

上传人:b****5 文档编号:28042539 上传时间:2023-07-07 格式:DOCX 页数:22 大小:101.05KB
下载 相关 举报
数据结构各习题.docx_第1页
第1页 / 共22页
数据结构各习题.docx_第2页
第2页 / 共22页
数据结构各习题.docx_第3页
第3页 / 共22页
数据结构各习题.docx_第4页
第4页 / 共22页
数据结构各习题.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

数据结构各习题.docx

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

数据结构各习题.docx

数据结构各习题

数据结构各章习题

第1章绪论

一、名词解释

数据   数据项   数据元素   数据结构数据逻辑结构   数据物理结构   算法算法的时间复杂性

二、单项选择题

1.数据结构是一门研究非数值计算的程序设计问题中,数据元素的①、数据信息在计算机中的②以及一组相关的运算等的课程。

①A.操作对象   B.计算方法  C.逻辑结构  D.数据映象

②A.存储结构B.关系C.运算D.算法

2.数据结构DS(DataStruct)可以被形式地定义为DS=(D,R),其中D是①的有限集合,R是D上的②有限集合。

①A.算法B.数据元素C.数据操作D.数据对象

②A.操作B.映象C.存储D.关系

3.在数据结构中,从逻辑上可以把数据结构分成。

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

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

4.算法分析的目的是①,算法分析的两个主要方面是②。

①A.找出数据结构的合理性B.研究算法中的输入和输出的关系

C.分析算法的效率以求改进D.分析算法的易懂性和文档性

②A.空间复杂性和时间复杂性B.正确性和简明性

C.可读性和文档性D.数据复杂性和程序复杂性

5.算法指的是。

A.计算方法B.排序方法C.解决问题的有限运算序列D.调度方法

6.数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为()。

A.存储结构B.逻辑结构

C.链式存储结构D.顺序存储结构

三、填空题(将正确的答案填在相应的空中)

1.数据逻辑结构包括、、和四种类型

2.在线性结构中,第一个结点前驱结点,其余每个结点有且只有个前驱结点;最后一个结点后续结点,其余每个结点有且只有个后续结点。

3.在树形结构中,树根结点没有结点,其余每个结点有且只有个直接前驱结点,叶子结点没有结点,其余每个结点的直接后续结点可以。

4.在图形结构中,每个结点的前驱结点数和后续结点数可以。

5.线性结构中元素之间存在关系,树形结构中元素之间存在关系,图形结构中元素之间存在关系。

6.算法的五个重要特性是____,____,____,____,____。

四、分析下列算法的时间复杂度:

1.sum=0;

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

{sum=sum+i;}

2.i=1;

while(i<=n)

i=i*10;

3.sum=0;

for(i=0;i

for(j=0;j

sum=sum+Array[i][j];

4.s=0;

for(I=0;i

for(j=0;j

s+=B[i][j];

sum=s;

5.for(i=0;i

for(j=0;j

A[i][j]=0;

6.i=0;

while(i<=n)

i=i*3;

第2章线性表

一、单项选择题

1.一个向量(即一批地址连续的存储单元)第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是____。

A.110B.108C.100D.120

2.线性表的逻辑顺序与存储顺序总是一致的,这种说法___。

A.正确B.不正确

3.线性表若采用链式存储结构时,要求内存中可用存储单元的地址___。

A.必须是连续的B.部分地址必须是连续的

C.一定是不连续的D.连续或不连续都可以

4.在以下的叙述中,正确的是___。

A.线性表的顺序存储结构优于链表存储结构

B.线性表的顺序存储结构适用于频繁插入/删除数据元素的情况

C.线性表的链表存储结构适用于频繁插入/删除数据元素的情况

D.线性表的链表存储结构优于顺序存储结构

5.在等概率情况下,顺序表的插入操作要移动______结点。

 

A.全部B.一半 

C.三分之一 D.四分之一

6.不带头结点的单链表head为空的判定条件是____。

A.head==NULLB.head->next==NULL

C.head->next==headD.head!

=NULL

7.带头结点的单链表head为空的判定条件是____。

A.head==NULLB.head->next==NULL

C.head->next==headD.head!

=NULL

8.非空的循环单链表head的尾结点(由p所指向)满足____。

A.p->next==NULLB.p==NULL

C.p->next==headD.p==head

9.在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点,则执行____。

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

B.q->next=s;s->next=p;C.p->next=s;s->next=q;

10.在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行____。

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

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

11.在一个单链表中,若删除p所指结点的后续结点,则执行____。

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

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

12.从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较____个结点。

A.nB.n/2C.(n-1)/2D.(n+1)/2

13.在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是____。

A.O

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

14.给定有n个元素的向量,建立一个有序单链表的时间复杂度是____。

A.O

(1))B.O(n)C.O(n2)D.O(n*log2n)

15.在n个结点的线性表的数组实现中,算法的时间复杂度是O

(1)的操作是。

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

B.在第i(1<=i<=n)个结点后插入一个新结点

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

D.以上都不对

二、填空题

1.单链表可以做____的链接存储表示。

2.在双链表中,每个结点有两个指针域,一个指向______,另一个指向_____。

3.在一个单链表中p所指结点之前插入一个s(值为e)所指结点时,可执行如下操作:

q=head;

while(q->next!

=p)q=q->next;

s=newNode;s->data=e;

q->next=;//填空

s->next=;//填空

4.在一个单链表中删除p所指结点的后继结点时,应执行以下操作:

q=p->next;

p->next=____;//填空

delete;//填空

5.在一个单链表p所指结点之后插入一个s所指结点,应执行s->next=____和p->next=____的操作。

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

____。

三、简答

1.算法分析的目的是什么?

2.什么是算法的最坏和平均时间复杂性?

3.什么是线性表?

线性表的主要运算有哪些?

4.试比较顺序表与链表的优缺点。

5.写出在单链表L中的p所指结点之前插入一个s所指结点的操作。

四、算法题

1.设顺序表La中的数据元数递增有序。

试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。

2、写算法:

在顺序表L中找到最小的元素,并将其与原来第一个元素换位置,显示改变后的顺序表。

3、写算法:

在单链表L中找到最小的元素,并将其与原来第一个元素换位置,显示改变后的单链表。

4.设计一个函数,查找单链表中数值为x的结点。

5.已知一个单链表,编写一个删除其值为x的结点的算法。

6.已知一个递增有序的单链表,编写一个函数向该单链表中插入一个元素为x的结点,使插入后该链表仍然递增有序。

7.试写一算法,实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1,a2,….an)逆置为(an,an-1,….,a1)。

8.试写一算法,实现单链表的就地逆置(要求在原链表上进行)。

*9.已知一个单链表,编写一个函数从此单链表中删除自第i个元素起的中k个元素

*10.有一个共10个结点的单链表,试设计一个函数将此单链表分为两个结点数相等的单链表。

*11.已知一个指针p指向单循环链表中的一个结点,编写一个对此单循环链表进行遍历的算法。

*12.一个顺序表中的元素为全部为正或者负整数,试设计一算法,在尽可能少的时间内重排该表,将正、负整数分开,使顺序表中所有负整数在正整数前面。

*13.已知线性表中的元素以值递增有序排列,并以单链表作存储结构。

试写一算法,删除表中所有大于x且小于y的元素(若表中存在这样的元素)同时释放被删除结点空间。

第3章栈和队列

一单项选择题

1.一个栈的入栈序列a,b,c,d,e,则栈的不可能的输出序列是____。

A.edcbaB.decbaC.dceabD.abcde

2.若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为____。

A.iB.n=iC.n-i+1D.不确定

3.栈结构通常采用的两种存储结构是____。

4.判定一个顺序栈ST(最多元素为m)为空的条件是____。

5.判定一个顺序栈ST(最多元素为m)为栈满的条件是____。

6.栈的特点是____,队列的特点是____。

A.先进先出B.先进后出

7.一个队列的数据入列序列是1,2,3,4,则队列的出队时输出序列是____。

8.判定一个循环队列Q(最多元素为m)为空的条件是____,

为满的条件是____。

9.循环队列用数组A[0,m-1]存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是____。

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

C.rear-front-1D.rear-front

10.栈和队列的共同点是____。

A.都是先进后出B.都是先进先出

C.只允许在端点处插入和删除元素D.没有共同点

二填空题(将正确的答案填在相应的空中)

1.向量(数组)、栈和队列都是____结构,可以在向量的____位置插入和删除元素;对于栈只能在____插入和删除元素;对于队列只能在____插入元素和____删除元素。

2.向栈中压入元素的操作是____。

对栈进行退栈时的操作是____。

(写涵数调用语句)

3.在一个循环队列中,队首指针指向队首元素的____。

4.从循环队列中删除一个元素时,其操作是____。

(写涵数调用语句)

三、简答题

1.什么是栈?

什么是队列?

它们各自的特点是什么?

2.线性表、栈、队列有什么异同?

3.简述栈的入栈、出栈操作的过程。

(用文字描述)

4.在循环队列中简述入队、出队操作的过程。

(用文字描述)

5.在什么情况下,会选择使用栈或队列数据结构?

6.顺序队的“假溢出”是怎样产生的?

如何知道循环队列是空还是满?

四、读栈队相关的程序,写出程序的运行结果

五、算法设计题

1.输入一个任意的非负十进制整数,输出与其等值的八进值数。

2.试写一个算法判别读入的一个以‘@’为结束符的字符序列是否是“回文”。

3.设计一算法能判断一个算术表达式中的圆括号配对是否正确。

(提示:

对表达式进行扫描,凡遇到“(”就进栈,遇到“)”就退出栈顶的“(”,表达式扫描完毕时栈若为空则圆括号配对正确。

 

第5章树与二叉树

一、单项选择题

1.树最适合用来表示____。

A.有序数据元素B.无序数据元素

C.元素之间具有分支层次关系的数据D.元素之间无联系的数据

2.假定在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为个。

A.15B.16C.17D.47

3.按照二叉树的定义,具有3个结点的不同形状的二叉树有____种。

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

5.深度为5的二叉树至多有____个结点。

A.16B.32C.31D.10

6.如果某二叉树的前根次序遍历结果为stuwv,中序遍历为uwtvs,那么该二叉树的后序为____。

A.uwvtsB.vwutsC.wuvtsD.wutsv

7.二叉树的前序遍历序列中,任意一个结点均处在其子女结点的前面,这种说法____。

A.正确B.错误

8.某二叉树的前序遍历结点访问顺序是abdgcefh,中序遍历的结点访问顺序是dgbaechf,则其后序遍历的结点访问顺序是____。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

9.在一非空二叉树的中序遍历序列中,根结点的右边____。

A.只有右子树上的所有结点B.只有右子树上的部分结点

C.只有左子树上的部分结点D.只有左子树上的所有结点

10.一棵二叉树如图6.1所示,其中序遍历的序列为__。

A.abdgcefhB.dgbaechfC.gdbehfcaD.abcdefgh

11.设a,b为一棵二叉树上的两个结点,在中序遍历时,a在b前的条件是。

A.a在b的右方B.a在b的左方C.a是b的祖先D.a是b的子孙

12.已知某二叉树的后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是____。

A.acbedB.decabC.deabcD.cedba

13.已知一棵完全二叉树的结点总数为9个,则最后一层的结点数为。

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

14.如图6.2所示的4棵二叉树,____不是完全二叉树。

 

二、填空题(将正确的答案填在相应的空中)

1.将树转化为二叉树的基本目的是____。

2.深度为k的完全二叉树至少有____个结点。

至多有____个结点,若按自上而下,从左到右次序给结点编号(从1开始),则编号最小的叶子结点的编号是____。

3.在一棵二叉树中,度为零的结点的个数为n0,度为2的结点的个数为n2,则有n0=____。

4.一棵二叉树的第i(i≥1)层最多有____个结点;一棵有n(n>0)个结点的满二叉树共有____个叶子和____个非终端结点。

5.哈夫曼树是指______________________________________________的二叉树

6.有如图6.3所示的二叉树,回答以下问题:

⑴其中序遍历序列为____;

⑵其前序遍历序列为____;

⑶其后序遍历序列为____;

 

三、应用题

1.分别写出下图所示二叉树的前序、中序和后序遍历序列。

2.若二叉树中各结点值均不相同。

1)已知一个二叉树的中序和后序遍历序列分别为GDHBAECIF和GHDBEIFCA,请画出此二叉树。

2)已知一个二叉树的前序和中序分别为ABCDEFGH和BDCEAFHG,请画出此二叉树。

3.一个二叉树如图所示,将其转换为树。

 

 

4.画出该森林对应的二叉树。

 

5.有一份电文中共使用5个字符:

a、b、c、d、e,它们的出现频率依次为{5、2、1、6、4};试画出对应的哈夫曼树,并求出每个字符的哈夫曼编码。

四、算法设计题

1.一个二叉树以链式结构存储,分别给出求二叉树结点总数和叶子结点总数和高度的算法。

2.一个二叉树以链式结构存储,写出在二叉树中查找值为x的结点的算法。

3.设计算法将一个以链式存储结构的二叉树进行各种遍历

第6章图

一、单项选择题

1.在一个图中,所有顶点的度数之和等于所有边数的____倍。

A.1/2B.1C.2D.4

2.任何一个无向连通图的最小生成树。

A.只有一棵B.有一棵或多棵C.一定有多棵D.可能不存在

3.在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的____倍。

A.1/2B.1C.2D.4

4.一个有n个顶点的无向图最多有____条边。

A.nB.n(n-1)C.n(n-1)/2D.2n

5.具有4个顶点的无向完全图有____条边。

A.6B.12C.16D.20

6.具有6个顶点的无向图至少应有____条边才能确保是一个连通图。

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

7.在一个具有n个顶点的无向图中,要连通全部顶点至少需要____条边。

A.nB.n+1C.n-1D.n/2

8.对于一个具有n个顶点的无向图,若采用邻接矩阵表示,则该矩阵的大小是

____。

A.nB.(n-1)2C.n-1D.n*n

9.对于一个具有n个顶点和e条边的无向图,若采用邻接表表示,则表头向量的大小为_①___;所有邻接表中的接点总数是_②___。

①A.nB.n+1C.n-1D.n+e

②A.e/2B.eC.2eD.n+e

10.已知一个图如图7.1所示,若从顶点a出发按深度搜索法进行遍历,则可能得到的一种顶点序列为__①__;按宽度搜索法进行遍历,则可能得到的一种顶点序列为__②__。

①A.a,b,e,c,d,fB.e,c,f,e,b,dC.a,e,b,c,f,dD.a,e,d,f,c,b

②A.a,b,c,e,d,fB.a,b,c,e,f,dC.a,e,b,c,f,dD.a,c,f,d,e,b

 

11.已知一有向图的邻接表存储结构如图6.2所示。

 

⑴根据有向图的深度优先遍历算法,从v1出发,所得到的顶点序列是___

A.v1,v2,v3,v5,v4B.v1,v2,v3,v4,v5

C.v1,v3,v4,v5,v2D.v1,v4,v3,v5,v2

⑵根据有向图的宽度优先遍历算法,从v1出发,所得到的顶点序列是____。

A.v1,v2,v3,v4,v5B.v1,v3,v2,v4,v5

C.v1,v2,v3,v5,v4D.v1,v4,v3,v5,v2

12.采用邻接表存储的图的深度优先遍历算法类似于二叉树的____。

A.先序遍历B.中序遍历C.后序遍历D.按层遍历

13.采用邻接表存储的图的宽度优先遍历算法类似于二叉树的____。

A.先序遍历B.中序遍历C.后序遍历D.按层遍历

15.在图6.3所示的拓朴排列的结果序列为。

A.125634B.516234C.123456D.521634

图6.3有向图

16.一个有n个顶点的无向连通图,它所包含的连通分量个数为。

A.0B.1C.nD.n+1

17.对于一个有向图,若一个顶点的入度为k1,、出度为k2,则对应邻接表中该顶点单链表中的结点数为。

A.k1B.k2C.k1-k2D.k1+k2

18.对于一个有向图,若一个顶点的入度为k1,、出度为k2,则对应逆邻接表中该顶点单链表中的结点数为。

A.k1B.k2C.k1-k2D.k1+k2

二、基本知识题

1.图的逻辑结构特点是什么?

什么是无向图和有向图?

什么是子图?

什么是网络?

什么是完全图,生成树?

2.什么是顶点的度?

什么是路径?

什么是连通图和非连通图?

什么是非连通图的连通分量?

3.给出图所示的无向图G的邻接矩阵和邻接表两种存储结构。

4.假设图的顶点是A、B……请根据下面的邻接矩阵画出相应的无向图或有向图。

5.分别给出图所示G图的深度优先搜索和广度优先搜索得到的顶点访问序列。

6.应用prim算法求图所示带权连通图的最小生成树。

7.写出图所示有向图的拓朴排序序列。

8.在无权图G的邻接矩阵A中,若(vi,vj)或<vi,vj>属于图G的边集合,则对应元素A[i][j]等于____,否则等于____。

9.在无向图G的邻接矩阵A中,若A[i][j]等于1,则A[j][i]等于____。

10.已知一个有向图的邻接矩阵表示,计算第i个结点的入度的方法是

____。

11.已知一个图的邻接矩阵表示,删除所有从第i个结点出发的边的方法是

____。

12.如果含n个顶点的图形成一个环,则它有棵生成树。

三、算法设计题

1.如图1所示图G,建立其对应的邻接表存储,并写出深度优先算法。

2.如图1所示图G,建立其对应的的邻接矩阵存储,并写出广度优先算法。

图1

3.编写一个函数建立一个有向图的邻接表。

4.编写一个无向图的邻接矩阵转换成邻接表的算法。

第7章查找

一、基础知识题

1.解释下列名词

(1)查找    

(2)树型查找    (3)平衡因子

(4)散列函数    (5)冲突

2.设有序表为{a,b,c,d,e,f,g},请分别画出对给定值f,g和h进行拆半查找的过程。

3.试述顺序查找法、二分查找法和分块查找法对被查找表中元素的要求,每种查找法对长度为n的表的等概率查找长度是多少?

4.顺序查找法的平均查找长度为____;折半查找法的平均查找长度为

____;哈希表查找法采用链接法处理冲突时的平均查找长度为____。

5.在各种查找方法中,平均查找长度与结点个数n无关的查找方法是____。

6.折半查找的存储结构仅限于____,且是____。

7.假设在有序线性表A[1..20]上进行折半查找,则比较一次查找成功的结点数为____,则比较二次查找成功的结点数为____,则比较三次查找成功的结点数为____,则比较四次查找成功的结点数为__

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

当前位置:首页 > 解决方案 > 其它

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

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