数据结构习题整理.docx

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

数据结构习题整理.docx

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

数据结构习题整理.docx

数据结构习题整理

1概述

一、选择题:

1、下列算法的时间复杂度是(B)

for(i=0;i

c[i]=i;

A.O

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

10、下列算法的时间复杂度是()

for(i=0;i

for(j=0;j

a[i][j]=i*j;

A.O(m2)B.O(n2)C.O(m×n)D.O(m+n)

二、填空题:

4、程序段“for(i=1;i<=n;i++){k++;for(j=1;j<=n;j++)x=x+k;}”的时间复杂度为()。

2线性表

一、选择题:

1、在表长为n的顺序表上做插入运算,平均要移动的结点数为()。

A.nB.n/2C.n/3D.n/4

2、在一个单链表中,若P所指结点不是最后结点,在P之后插入S所指结点,则执行()

A.S->next=P->next;P->next=S

B.P->next=S->next;S->next=P;

C.P->next=P;P->next=S;

D.P->next=S;S->next=P;

3、在已知头指针的单链表中,要在其尾部插入一新结点,其算法所需的时间复杂度为()

A.O

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

4、对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为()

A.顺序表B.用头指针表示的单循环链表

C.用尾指针表示的单循环链表D.单链表

5、线性表是()

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

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

6、在n个结点的双链表的某个结点前插入一个结点的时间复杂度是()

A.O(n)B.O

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

7、线性表采用链式存储时,结点的地址()

A.必须是连续的B.必须是不连续的

C.连续与否均可D.必须有相等的间隔

8、在单链表中,增加头结点的目的是()

A.使单链表至少有一结点B.标志表中首结点位置

C.方便运算的实现D.说明单链表是线性表的链式存储实现

9、带头结点的单链表head为空的判定条件是()

A.head=NULL;B.head->next=NULL;

C.head->next=head;D.head!

=NULL;

10、在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度为()

A.O

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

11、下列有关线性表的叙述中,正确的是()

A.线性表中的元素之间是线性关系

B.线性表中至少有一个元素

C.线性表中任何一个元素有且仅有一个直接前趋

D.线性表中任何一个元素有且仅有一个直接后继

12、在单链表中,存储每个结点需有两个域,一个是数据域,另一个是指针域,它指向该结点的()

A.直接前趋B.直接后继C.开始结点D.终端结点

13、将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是()。

A.nB.2n-1C.2nD.n-1

14、链表不具有的特点是()。

A.随机访问    B.不必事先估计存储空间

C.插入删除时不需移动元素D.所需的空间与线性表成正比

15、在一个单链表中,已知q所指结点是p所指结点的直接前趋,若在p,q之间插入s结点,则执行的操作是()。

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

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

16、链表具有的特点是()。

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

C.不必事先估计存储空间D.存储空间是静态分配的

17、一个顺序表一旦说明,其中可用空间大小()

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

18、若某线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用()存储方式最节省时间。

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

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

A.P->next==QB.Q->next==P

C.P==QD.P->next==Q->next

20、链表不具有的特点是()。

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

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

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

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

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

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

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

22、在n个结点的顺序表中,算法的时间复杂度是O

(1)的操作是()。

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

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

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

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

23、在一个单链表中,若删除p指向结点的后继结点,则执行的操作为()。

A.q=p->next;p->next=p->next->next;free(q);

B.p=p->next;q=p->next;p=q->next;free(q);

C.q=p->next->next;p=p->next;free(q);

D.p=p->next->next;q=p->next;free(q);

二、填空题:

1、在双链表中要删除已知结点*p,其时间复杂度为(     )。

2、在仅有尾指针R指示的单循环链表R中,在表尾插入一个结点S的语句序列是(                )。

3、在带头结点的双链表L中,指针P所指结点是开始结点的条件是(     )。

4、在具有n个结点的双链表中做插入、删除运算,平均时间复杂度为(     )。

5、在一个长度为n的顺序表中第i个元素(1≤i≤n)之前插入一个元素时,需向后移动(       )个元素。

6、在双循环链表中,若要在指针p所指结点之前插入指针s所指的结点,则需执行下列语句:

s->prior=p->prior;p->prior->next=s;()和p->prior=s;。

7、已知指针p指向双向链表中的一个结点(非首结点、非尾结点),则将结点s插入在p结点的直接后继位置的语句是()s->prior=p;s->next->prior=s;p->next=s;

8、已知带表头结点的单链表L,指针p指向L链表中的一个结点(非首结点、非尾结点),则删除结点p的直接后继结点的语句是();删除首结点的语句是()。

程序设计题:

1、已知带头结点的单链表head中的结点是按整数值递增排序的,写一算法将值为x的结点插入到表head中,使head仍然有序。

2、用尾插入法建立带头结点的单链表。

3、写出将整数i插入到无头结点的链栈中的算法。

4、对给定的单链表L,编写一个删除L中值为x的结点的直接前趋结点算法。

]

5、以下函数的功能是在顺序表a中找到第一个值为x的元素,然后在该元素之前插入一个值为y的元素。

如果找不到值为x的元素,则新元素成为顺序表的最后一个元素。

插入成功返回1,否则返回0。

完成以下程序。

(10分)

Typedefstruct

{

intelem[100];

intlength;

}SQ;

intins(SQ*a,intx,inty)

{

intk,i;

if(

(1))

return0;

for(k=0;klength;k++)

if(a->elem[k]==x)

break;

for(i=a->length-1;i>=k;i--)

(2)

(3)=y;

(4);

return1;

}

3栈和队列

一、选择题:

1、循环队列是空队列的条件是()

A.Q->rear==Q->frontB.(Q->rear+1)%maxsize==Q->front

C.Q->rear==0D.Q->front==0

2、链栈与顺序栈相比,比较明显的优点是()

A.插入操作更加方便     B.删除操作更加方便

C.不会出现下溢的情况  D.不会出现上溢的情况

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

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

4、栈与一般线性表的区别主要在()

A.元素个数B.元素类型C.逻辑结构D.插入、删除元素的位置

5、一个链栈的栈顶指针是top,则执行出栈操作时(栈非空),用x保存被删除结点,则执行()

A.x=top;top=top->next;

B.x=top->data;

C.top=top->next;x=top->data;

D.x=top->data;top=top->next;

6、对于一个栈,给定输入序列为1,2,3,则下列不可能为输出序列的是()

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

7、在链接队列执行入队操作( )

A.需判别队是否空B.需判别队是否满

C.限制在链表头p进行D.限制在链表尾p进行

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

A.删除栈顶元素B.删除栈底元素

C.判断栈是否为空D.将栈置为空栈

9、一个栈的入栈序列是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

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

A.线性表的顺序存储结构 B.栈

C.队列    D.线性表的链式存储结构

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

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

12、设数组Data[n]作为循环队列Q的存储空间,front为队头指针,rear为队尾指针,则执行入队操作的语句为()。

A.rear=(rear+1)%(n+1)B.front=(front+1)%n

C.rear=(rear+1)%nD.front=(front+1)%(n+1)

13、一个栈的入栈序列是1,2,3,4,5,则栈的不可能的输出序列是()。

A.54321B.45321C.43512D.12345

14、栈是限定在()处进行插入或删除操作的线性表。

A.端点B.栈底C.栈顶D.中间

15、容量是10的循环队列的队头位置q->front为2,则队的第一个数据元素的位置是()

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

16、循环队列的出队操作是()

A.q->front=(q->front+1)%maxsize;B.q->front=q->front+1;

C.q->rear=(q->rear+1)%maxsize;D.q->rear=q->rear+1;

17、当循环队列q是满队列时,存放队列元素的数组data有n个元素,则data中存放()个数据元素。

A.nB.n-1C.n-2D.0

18、以下哪一个不是队列的基本运算()。

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

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

19、从栈顶指针为top的链栈中删除一个结点,并将被删除结点的值保存到x中,其操作步骤为()。

A.x=top->data;top=top->nextB.top=top->next;x=top->data;

C.x=top;top=top->nextD.x=top->data;

20、在一个链队列中,若f,r分别为队首、队尾指针,则插入s所指结点的操作为()。

A.f->next=s;f=sB.r->next=s;r=s;

C.s->next=r;r=s;D.s->next=f;f=s

21、循环队列的入队操作应为()。

A.q->rear=q->rear+1;q->data[q->rear]=x;

B.q->data[q->rear++]=x;

C.q->rear=(q->rear+1)%maxsize;q->data[q->rear]=x;

D.q->data[q->rear]=x;q->rear=(q->rear+1)%maxsize;

22、栈和队列都是()。

A.限制存取点的线性结构B.限制存取点的非线性结构

C.顺序存储的线性结构D.链式存储的线性结构

23、实现递归调用属于()的应用。

A.队列B.栈C.数组D.树

二、填空题:

1、循环队列用数组data[m]存放其元素值,已知其头、尾指针分别是front和rear,则当前队列中元素的个数是(            )。

2、栈顶的位置是随着(       )操作而变化的。

3、假设以S和X分别表示进栈和退栈操作,则对输入序列a,b,c,d,e进行一系列栈操作SSXSXSSXXX之后,得到的输出序列为(        )。

4、队列的队尾位置随着(     )而变化。

5、在(       )的情况下,链队列的出队操作需要修改尾指针。

6、从栈顶指针为top的链栈中删除一个结点,并将被删除的结点的值保存在x中,其操作步骤为();top=top->next;。

7、用数组A[m]来存放循环队列q的元素,且它的头、尾指针分别为front和rear,队列满足条件(q.rear+1)%m==q.front,则队列中当前的元素个数为()。

8、顺序栈s存储在数组s->data[max]中,对s进行出栈操作,执行的语句序列是()。

9、以下运算实现在循环队列中的初始化操作

voidinitqueue(seqqueue*q){q->front=0;();}

10、稀疏矩阵

的三元组表示为_________

11、广义表((a),((b),c),(((d))))的长度是,深度是

三、树和二叉树

一、选择题:

1、在具有n个结点的完全二叉树中,结点i(i>1)的父结点是()

A.2iB.不存在C.2i+1D.⌊i/2⌋

2、有m个叶结点的哈夫曼树所具有的结点数为()

A.mB.m+1C.2mD.2m-1

3、下列陈述中正确的()

A.二叉树是度为2的有序树

B.二叉树中结点只有一个孩子时无左右之分

C.二叉树中必有度为2的结点

D.二叉树中最多只有两棵子树,并且有左右之分

4、以二叉链表作为二叉树的存储结构,在具有n个结点的二叉链表中(n>0),空链域的个数为()

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

5、将一棵有100个结点的完全二叉树从上到下,从左到右依次对结点进行编号,根结点的编号为1,则编号为49的结点的左孩子编号为()

A.99B.98C.50D.48

6、在一棵具有五层的满二叉树中,结点总数为()

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

7、在一棵二叉树中,第5层上的结点数最多为()

A.8B.15C.16D.32

8、由二叉树的(     )遍历,可以惟一确定一棵二叉树

A.前序和后序B.前序和中序C.后序D.中序

9、具有35个结点的完全二叉树的深度为()。

A.5B.6

C.7D.8

10、已知一棵二叉树的先序遍历序列为EFHIGJK,中序遍历序列为HFIEJGK,则该二叉树根的右子树的根是()。

A.EB.F C.GD.J

11、由4个结点构造出的不同的二叉树个数共有()。

A.8B.10C.12D.14

12、在完全二叉树中,如果一个结点是叶子结点,则它没有()。

A.左孩子结点B.右孩子结点

C.左、右孩子结点D.左、右孩子结点和兄弟结点

13、深度为6的二叉树最多有()个结点。

A.64B.63C.32D.31

14、二叉树使用二叉链表存储,若p指针指向二叉树的一个结点,当p->lchild=NULL时,则()。

A.p结点左儿子为空B.p结点有右儿子

C.p结点右儿子为空D.p结点有左儿子

15、在具有n个结点的完全二叉树中,若结点i有左孩子,则结点i的左孩子编号为()。

A.2iB.不存在C.2i+1D.2i-1

16、将含100个结点的完全二叉树从根这一层开始,按从上到下从左到右依次对结点编号,根结点的编号为1。

编号为50的结点X的双亲的编号为()。

A.25B.48C.100D.无法确定

17、三个结点可以构成()种不同形状的二叉树。

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

18、若由树转化得到的二叉树是非空的二叉树,则二叉树形状是()。

A.根结点无右子树的二叉树B.根结点无左子树的二叉树

C.根结点可能有左子树和右子树D.各结点只有一个儿子的二叉树

19、哈夫曼树是访问叶结点的带权路径长度()的二叉树。

A.最短B.最长C.可变D.不定

20、某二叉树的前序和后序序列正好相反,则该二叉树一定是()的二叉树。

A.空或只有一个结点B.高度等于其结点数

C.任一结点无左孩子D.任一结点无右孩子

二、填空题:

1、12个结点的完全二叉树的叶结点有(      )个。

2、在任何一棵二叉树中,度为0的结点n0和度为2的结点n2之间的关系是(    )。

3、已知完全二叉树的第4层有4个结点,则其叶子结点数是(     )。

4、10个结点的完全二叉树的叶结点有(      )个。

5、深度为6的二叉树最多有()个结点。

6、一个二叉树中,度为2的结点有3个,则叶结点有()个。

7、若二叉树的一个叶子是某子树的中根遍历序列中的第一个结点,则它必是该子树的后根遍历序列中的()个结点。

8、下图为某树的静态双亲表示,则结点D、E的双亲结点分别为()和()。

A

-1

B

0

C

0

D

1

E

2

0

1

2

3

4

9、具有m个叶结点的哈夫曼树共有()个结点。

10、二叉树通常有()存储结构和()存储结构两种。

11、二叉树在二叉链表表示方式下,p指向二叉树的根结点,经运算s=p;while(s->rchild)s=s->rchild后,s指针指向()结点。

11、有二叉树

 

在二叉链表表示方式下,p指向该树的根结点,经运算s=p;while(s->right)s=s->right;

后,s指针指向_________结点。

三、应用题:

1、对给定的一组权值W={5,2,9,11,8,3,7},试构造相应的哈夫曼树,并计算它的带权路径长度。

2、已知一棵二叉树的前序序列和中序序列分别如下,请画出该二叉树。

前序序列:

ABDGJKLHCEIF

中序序列:

BGJLKDHAEICF

3、试找出分别满足下列条件的所有二叉树。

(1)前序序列和中序序列相同;

(2)中序序列和后序序列相同;

(3)前序序列和后序序列相同。

4、设有一组结点,其权值W={1,4,9,16,25,36,49,64,81,100},画出由这些结点所构成的哈夫曼树,并计算带权路径长度。

5、画出下图所示森林经转换后所对应的二叉树。

6、给定权值3,12,3,15,5,4,6,8,构造相应的哈夫曼树,并求出其WPL。

7、已知一棵二叉树的先根遍历序列和中根遍历序列分别是ABDGHECFIJ及GDHBEACIJF,画出这棵二叉树。

 

8、写出下图所示二叉树的先根遍历、中根遍历、后根遍历的结点序列,并将其转换为森林。

 

9、有五个叶子节点,分别带权8,3,2,1,10,构造哈夫曼树,并求其带权路径长度WPL。

10、一棵二叉树的先序、中序和后序序列分别如下,其中一部分未给出,试求出空格处的内容,并画出二叉树。

先序:

_B_F_ICEH_G

中序:

D_KFIA_EJC_

后序:

_K_FBHJ_G_A

四、程序设计题:

1、写出二叉树的建立及前序遍历递归算法。

2、写出二叉树的建立及后序遍历递归算法。

3、写出二叉树的建立及中序遍历递归算法。

四、图

一、选择题:

1、在一个具有n个结点的无向图中,要连通全部结点至少需要()

A.n条边B.n+1条边C.n-1条边D.n/2条边

2、最小生成树指的是()

A.由连通图所得到的边数最少的生成树

B.由连通图所得到的顶点相对较少的生成树

C.连通图的所有生成树中权值之和最小的生成树

D.连通图的极小连通子图

3、在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的()

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

4、有n个结点的无向图的边数最多为()

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

5、若n个顶点的无向图采用邻接矩阵存储方法,该邻接矩阵是一个()

A.一般矩阵B.对称矩阵C.对角矩阵D.稀疏矩阵

6、设有一个有向图如下所示,请指出下列()序列不是该图的拓扑排序序列?

A.EAFBGDCB.AEBCGFD

C.ABCGEFDD.EBAGFCD

7、拓扑排序是对()进行的。

A.无向图B.有向图

C.任意图D.有向图和无向图

8、下面哪一种图的邻接矩阵肯定是对称矩阵()。

A.有向图B.无向图C.AOV网D.AOE网

9、设有向图G有n个顶点,它的邻接矩阵为A,G中第i个顶点Vi的度为()。

A.

B.

C.

D.2

10、深度优先遍历类似于二叉树的()。

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

11、有n个顶点的无向图的邻接矩阵是用()数组存储。

A.n行n列B.一维C.任意行n列D.n行任意列

12、最小生成树的构造可使用()。

A.prim算法B.冒泡算法

C.迪杰斯特拉算法D.哈夫曼算法

13、有8个结点的有向完全图有()条边。

A.14B.28C.56D.112

14、有8个结点的无向图最多有()条边。

A.14B.28C.56D.112

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

当前位置:首页 > 经管营销 > 经济市场

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

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