数据结构+习题集.docx
- 文档编号:5661421
- 上传时间:2022-12-30
- 格式:DOCX
- 页数:18
- 大小:39.19KB
数据结构+习题集.docx
《数据结构+习题集.docx》由会员分享,可在线阅读,更多相关《数据结构+习题集.docx(18页珍藏版)》请在冰豆网上搜索。
数据结构+习题集
数据结构习题
第一章2
第二章3
第三章6
第四章7
第五章7
第六章9
第七章11
第九章13
第十章15
十二章文件16
第一章
一、选择题
1.在数据结构中,与所使用的计算机无关的数据叫结构。
A.存储B.物理C.逻辑D.物理和存储
二、判断题
1.数据元素是数据的最小单位()。
2.数据项是数据的基本单位()。
三、基本概念
1.简述下列概念:
数据、数据元素、数据类型、数据结构、逻辑结构、存储结构、线
性结构、非线性结构。
2.常用的存储表示方法有哪几种?
3.设三个函数f,g,h分别为 f(n)=100n^3+n^2+1000 , g(n)=25n^3+5000n^2 , h(n)=n^1.5+5000nlgn 请判断下列关系是否成立:
(1) f(n)=O(g(n))
(2) g(n)=O(f(n))
(3) h(n)=O(n^1.5)
(4) h(n)=O(nlgn)
◇ 这里我们复习一下渐近时间复杂度的表示法T(n)=O(f(n)),这里的"O"是数学符号,它的严格定义是"若T(n)和f(n)是定义在正整数集合上的两个函数,则T(n)=O(f(n))表示存在正的常数C和n0 ,使得当n≥n0时都满足0≤T(n)≤C·f(n)。
"用容易理解的话说就是这两个函数当整型自变量n趋向于无穷大时,两者的比值是一个不等于0的常数。
这么一来,就好计算了吧。
第
(1)题中两个函数的最高次项都是n^3,因此当n→∞时,两个函数的比值是一个常数,所以这个关系式是成立的。
第二章
一、选择题
1.在一个长度为n的顺序表中,向第i个元素(1≤i≤n+1)之前插入一个新元素时,需向后移动个元素。
A.n-1B.n-i+1C.n-i-1D.I
2.线性表是。
A.一个有限序列,可以为空B.一个有限序列,不能为空
C.一个无限序列,可以为空D.一个无限序列,不能为空
3.对顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的,删除一个元素时大约要移动表中的个元素。
A.n+1B.n-1C.(n-1)/2D.n
4.线性表采用链式存储时,其地址。
A.必须是连续的B.部分地址必须是连续的
C.一定是不连续的D.连续与否均可以
5.设单链表中指针p指着结点(数据域为m),指针f指着将要插入的新结点(数据域为x),当x插在结点m之后时,只要先修改后修改p->link=f即可。
A.f->link=p;B.f->link=p->link;
C.p->link=f->link;D.f=nil;
6.在双向链表存储结构中,删除p所指的结点时需修改指针。
A.((p->rlink)->rlink)->link=p;p->rlink=(p->rlink)->rlink;
B.(p->llink)->rlink=p->rlink;(p->rlink)->llink=p->llink;
C.p->llink=(p->llink)->llink;((p->llink)->llink)->rlink=p;
D.((p->llink)->llink)->rlink=p;p->llink=(p->llink)->llink;
7.在双向链表存储结构中,删除p所指的结点的前趋结点(若存在)时需修改指针。
A.((p->llink)->llink)->rlink=p;p->llink=(p->llink)->llink;
B.((p->rlink)->rlink)->llink=p;p->rlink=(p->rlink)->rlink;
C.(p->llink)->rlink=p->rlink;(p->rlink)->llink=p->llink;
D.p->llink=(p->llink)->llink;((p->llink)->llink)->rlink=p;
8.根据线性表的链式存储结构,每个结点所含指针的个数,链表分为单链表和。
A.循环链表B.多重链表C.普通链表D.无头结点链表
9.从一个具有n个节点的单链表中查找其值等于x结点时,在查找成功的情况下,需平
均比较个结点。
A.nB.n/2C.(n-1)/2D.(n+1)/2
10.在一个单链表中,已知*q结点是*p结点的前驱结点,若在*q和*p之间插入*s结点,
则执行。
A.s->next=p->next;p->next=s;B.p->next=s->next;s->next=p;
C.q->next=s;s->next=p;D.p->next=s;s->next=q;
二、填空
1.在线性结构中第一结点_______,其余每个结点有且只有_______;最后一个结点________,其余每个结点有且只有[________。
2.对于顺序存储的线性表,当随机插入或删除一个元素时,约需平均移动表长___的元素。
3.对于长度为n的顺序表,插入或删除元素的时间复杂性为____;对于顺序栈或队列,插入或删除元素的时间复杂性为_______。
4.从顺序表中删除第i个元素时,首先把第i个元素赋给_______带回,接着从_______开始向后的所有元素均______一个位置,最后使线性表的长度__。
5.在线性表的顺序存储中,元素之间的逻辑关系是通过_____决定的;在线性表的链接存储中,元素之间的逻辑关系是通过_____决定的。
6.一个单链表中删除*p结点时,应执行如下操作:
(1)q=p->next;
(2)p->data=p->next->data;
(3)p->next=[1]q->next或p->next->next;
(4)free(q);
7.若要在一个单链表中的*p结点之前插入一个*s结点时,可执行如下操作:
(1)s->next=[1]p->next;
(2)p->next=s;
(3)t=p->data;
(4)p->data=[2]s->data;
(5)s->data=[3]t;
8.对于线性表的顺序存储,需要预先分配好存储空间,若分配太多则容易造成存储空间的______,若分配太少又容易在算法中造成____,因此适应于数据量变化不大的情况;对于线性表的链接存储(假定采用动态结点),不需要____分配存储空间,存储器中的整个_____都可供使用,分配和回收结点都非常方便,能够有效地利用存储空间,在算法中不必考虑___的发生,因此适应数据量变化较大的情况。
三、判断题
1.顺序存储的线性表可以随机存取()。
2.线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性
因此,是属于同一数据对象()。
3.在单链表中,任何两个元素的存储位置之间都有固定的联系,因为可以从头结点查找任何一个元素()。
4.在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构()。
5.链表的每个结点中,都恰好包含一个指针()。
四、综合题
1.线性表有两种存储结构:
一是顺序表,二是链表。
试问:
(1)两种存储表示各有哪些主要优缺点?
(2)如果有n个线性表同时并存,并且在处理过程中各表的长度会动态发生变化,线性表的总数也会自动地改变。
在此情况下,应选用哪种存储结构?
为什么?
(3)若线性表的总数基本稳定,且很少进行插入和删除,但要求以最快的速度存取线性表中的元素,那么,应采用哪种存储结构?
为什么?
2.用线性表的顺序结构来描述一个城市的设计和规划合适吗?
为什么?
3.在单链表和双向表中,能否从当前结点出发访问到任一结点?
4.编写下列算法
(1)向类型有list的线性表L的第i个元素(0≤i≤L.len)之后插入一个新元素x。
(2)从类型为list的线性表L中删除其值等于x的所有元素。
(3)将两个有序表A和B合并成一个有序表C,其中A,B,C均为list类型的变参。
5.编写下列算法,假定单链表的表头指针用HL表示,类型为linklist。
(1)将一个单链表中的所有结点按相反次序链接。
(2)删除单链表中第i个(i≥1)结点。
(3)删除单链表中由指针p所指向的结点。
(4)从带有附加表头结点的循环单链表中删除其值等于x的第一个结点。
(5)在单链表中指针p所指结点之前插入一个值为x的新结点。
(6)从循环单链表中查找出最小值。
(7)根据一维数组A(1:
n)中顺序存储的具有n个元素的线性表建立一个带有附加表头结点的单链表。
(8)请指出下面的过程执行p(5)和p(6)时分别输出的结果。
voidP(intn);
{
ifn>0
{
p(n-2);
printf("%d",n);
}
}
(9)假定用一个循环单链表表示队列(称此为循环链队),该队列只设一个队尾指针,设队首指针,试编写下列算法:
(1)向循环链队插入一个元素为x的结点;
(2)从循环链队中删除一个结点(假定不需要保留被删除结点的值和不需要回收结点)。
第三章
一、选择题
1.在一个具有n个单元的顺序栈中,假定以地址低端作为栈底,以top作为栈顶指针,则当做退栈处理时,top变化为。
A.top不变B.top=-nC.top=top-1D.top=top+1
2.向顺序栈中压入元素时,是。
A.先存入元素,后移动栈顶指针B.先移动栈顶指针,后存入元素
3.在一个顺序存储的循环队列中,队首指针指向队首元素的。
A.前一个位置B.后一个位置C.队首元素位置D.队尾元素位置
5.若进栈序列为1,2,3,4,进栈过程中可以出栈,则不可能是一个出栈序列。
A.3,4,2,1B.2,4,3,1C.1,4,2,3D.3,2,1,4
6.在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队首指针和队尾指针,则判断队空的条件是。
A.front==rear+1B.front+1==rearC.front==rearD.front==0
7.在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队首指针和队尾指针,则判断队满的条件是。
A.rear%n==frontB.(rear-1)%n==front
C.(rear-1)%n==rearD.(rear+1)%n==front
8.向一个栈项指针为hs的链栈中插入一个*s结点时,则执行。
A.hs->next=s;B.s->next=hs->next;hs->next=s;
C.s->next=hs;hs=s;D.s->next=hs;hs=hs->next;
9.在一个链队列中,假定front和rear分别为队首指针和队尾指针,则进行插入*s结点的操作时应执行。
A.front->next=s;front=s;B.rear->next=s;rear=s;
C.front=front->next;D.front=rear->next;
二、填空
1.在具有n个单元、顺序存储的循环队列中,队满时共有个元素。
2.无论对于顺序存储还是链接存储的栈和队列来说,进行插入或删除运算的时间复杂性均相同,则为。
三、综合题
1.试述栈的基本性质?
2.何谓队列的上溢现象?
解决它有哪些方法,且分别简述其工作原理。
3.两个字符串相等的充要条件是什么?
第四章
一、选择题
1.设字符串s1='abcdefg',s2='pqrst',则运算
s=concat(sub(s1,2,len(s2)),sub(s1,len(s2),2))后串值为。
A.'bcdef'B.'bcdefg'C.'bcpqrst'D.'bcdefef'
2.设a、b、c、d都是串名,a='THISISABOOK',b='ESEARE',C='S'。
求d=CONCAT(SUB(a,1,2),b,SUB(a,10,5),c)=
A.'bcdef'B.'bcdefg'C.'bcpqrst'D.'bcdefef'
二、综合题
1.设a、b、c、d都是串名,a='THISISABOOK',b='ESEARE',C='S'。
求d=CONCAT(SUB(a,1,2),b,SUB(a,10,5),c)=?
第五章
一、填空
1.一个数据结构用二元组表示时,它包括的集合K和K上的集合R。
2.对于一个二维数组A[1..m,1..n],若按行序为主序存储,则任一元素A[i,j]的相对地址(即偏移地址)为。
二、判断题
1.数组是同类型值的集合()。
2.使用三元组表示稀疏矩阵的元素,有时并不能节省存储时间()。
3.线性表可以看成是广义表的特例,如果广义表中的每个元素都是原子,则广义表便成为线性表()。
四、综合题
1.用三元组表示下面稀疏矩阵的转置矩阵。
┏01000┓
┃20003┃
M=┃00400┃
┗00050┛
2.在n×n(n≥3)的稀疏矩阵A中,只有下标满足1
3.数组b[1..10,-2..6,2..8]以行优先的顺序存储,设第一个元素的首址是100,每个元素的长度为3。
试求元素b[5,0,7]的存储首址。
4.在n×n(n≥3)的稀疏矩阵A中,只有下标满足1
5.画出广义表(A(B(E,F(J)),C,D(G(K,L),H,I)))对应的树型结构。
第六章
一.选择题
1.假定在一棵二叉树中,双分支结点数为15个,单分支结点数为32个,则叶子结点数为。
A.15B.16C.17D.47
2.假定一棵二叉树的结点数为18个,则它的最小高度。
A.4B.5C.6D.18
3.在一棵二叉树中第五层上的结点数最多为。
A.8B.15C.16D.32
4.在一棵具有五层的满二叉树中,结点总数为。
A.31B.32C.33D.16
5.已知8个数据元素为(34、76、45、18、26、54、92、65),按照依次插入结点的方法生成一棵二叉排序树后,最后两层上的结点总数为。
A.1B.2C.3D.4
6.由分别带权为9、2、5、7的四个叶子结点构造一棵哈夫曼树,该树的带权路径长度为。
A.23B.37C.44D.46
7.在树中除根结点外,其余结点分成m(m≥0)个的集合T1,T2,T3...Tm,每个集合又都是树,此时结点T称为Ti的父结点,Ti称为T的子结点(1≤i≤m)。
A.互不相交B.可以相交
C.叶结点可以相交D.树枝结点可以相交
8.下面答案是查找二叉树(又称二叉排序树)。
A.二叉树中的每个结点的两棵子树的高度差的绝对值不大于1
B.二叉树中的每个结点的两棵子树的高度差等于1
C.二叉树中的每个结点的两棵子树是有序的
D.二叉树中的每个结点的关键字大于其左子树(如果存在)所有结点的关键字值,且小于其右子树(如果存在)所有结点的关键字值。
9.如果结点A有三个兄弟,而且B是A的双亲,则B的出度是。
A.3B.4C.5D.1
10.一个深度为L的满K叉树有如下性质:
第L层上的结点都是叶子结点,其余各层上每个结点都有K棵非空子树。
如果按层次顺序从1开始对全部结点编号,编号为n的有右兄弟的条件是。
A.(n-1)%k==0B.(n-1)%k!
=0C.n%k==0D.n%k!
=0
11.在完全二叉树中,当i为奇数且不等于1时,结点i的左兄弟是结点,否则没有左兄弟。
A.2i-1B.i+1C.2i+1D.i-1
12.某二叉树T有n个结点,设按某种遍历顺序对T中的每个结点进行编号,编号值为1,2,...,n且有如下性质:
T中任一结点V,其编号等于左子树上的最小编号减1,而V的右子树的结点中,其最小编号等于V左子树上结点的最大编号加1。
这时按编号。
A.中序遍历序列B.前序遍历序列C.后序遍历序列D.层次遍历序列
13.最小代价生成树。
A.是唯一的B.不是唯一的C.唯一性不确定D.唯一性与原因的边的权数有关
二、填空
1.在树型结构中,树根结点没有结点,其余每个结点有且仅有;树叶结点没有,其余每个结点的结点数不受限制。
2.对于一棵具有n个结点的树,则该树中所有结点的度之和为。
3.在一棵二叉树中,度为0的结点的个数为n0,度为2的结点的个数为n2,则:
_______。
4.在二叉树的顺序存储中,对于下标为5的结点,它的双亲结点的下标为,若它存在左孩子,则左孩子结点的下标为,若它存在右孩子,则右孩子结点的下标为。
5.假定一棵二叉树的广义表表示为A(B(,D),C(E(G),F)),则该树的深度为,度为0的结点数为,度为1的结点数为,度为2的结点数为;C结点是A结点的______,E结点是C结点的_____。
6.在一棵二叉排序树中,按遍历得到的结点序列是一个有序序列。
7.由分别带权为3,9,6,2,5的共五个叶子结点构成一棵哈夫曼树,则带权路径长度
┏━━┳━━┳━━━┓
8.假定在二叉树的链接存储中,每个结点的结构为┃left┃data┃right┃,其中┗━━┻━━┻━━━┛
data为值域,left和right分别为链接左、右孩子结点的指针域,请在下面中序遍历算法中画有横线的地方填写合适的语句。
voidinorder(bt);
{ifbt!
=nil{
(1);
(2);
(3);}
}
三、判断题
1.后序遍历树和中序遍历与该树对应的二叉树,其结果不同()。
2.若有一个结点是某二叉树子树的中序遍历序列中的最后一个结点,则它必是该子树的前序遍历序列中的最后一个结点()。
3.若一个树叶是某子树的中序遍历序列中的最后一个结点,则它必是该子树的前序遍历序列中的最后一个结点()。
4.已知二叉树的前序遍历和后序遍历序列并不能唯一地确定这棵树,因为不知道树的根结点是哪一个()
5.在哈夫曼编码中,当两个字符出现的频率相同时,其编码也相同,对于这种情况应作特殊处理()。
6.中序遍历二叉排序树的结点就可以得到排好序的结点序列()。
7.在二叉排序树上插入新的结点时,不必移动其它结点,仅需改动某个结点的指针,由空变为非空即可()。
四、综合题
1.分别写出对二叉树进行中根遍历和先根遍历的非递归算法(不允许使用转向语句)。
2.对于二叉排序树,当所有结点的权都相等的情况下,最佳二叉排序树有何特点。
3.试证明已知一棵二叉树的前序序列和中序序列,则可唯一地确定一棵二叉树。
第七章
一、选择题
1.在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的倍。
A.1/2B.1C.2D.4
2.对于一个具有n个顶点和e条边的无向图,若采用邻接表表示,则表头向量的大小为。
A.nB.n+1C.n-1D.n+e
3.具有n个顶点的无向完全图,边的总数为条。
A.n-1B.nC.n+1D.n*(n-1)/2
4.设图G有n个顶点和e条边,当G是非孤立顶点的连通图时有2e>=n,故可推得深度优先搜索的时间复杂度为。
A.O(e)B.O(n)C.O(ne)D.O(n+e)
5.在无向图G的邻接矩阵A中,若A[i,j]等于1,则A[j,i]等于。
A.i+jB.i-jC.1D.0
6.图的深度优先或广度优先遍历的空间复杂性均为。
(访问标志位数组空间)
A.O(n)B.O(e)C.O(n-e)D.O(n+e)
二、填空
1.在图G的邻接表表示中,每个顶点邻接表中所含的结点数,对于无向图来说等于该顶点的,对于有向图来说等于该顶点的。
2.假定一个图具有n个顶点和e条边,则采用邻接矩阵表示的空间复杂性为,采用邻接表表示的空间复杂性为。
3.已知一个无向图的邻接矩阵如下所示,则从顶点A出发按深度优先搜索遍历得到的顶点序列为,按广度优先搜索遍历得到的顶点序列为
ABCDEF
┏011010┓A
┃101011┃B
┃110100┃C
┃001001┃D
┃110001┃E
┗010110┛F
4.已知一个图如下所示,在该图的最小生成树中,各边的权值之和为。
10
①②
15
5
28⑤
12
③3④
三、判断题1.有回路的图不能进行拓扑排序()。
2.有回路的图不能进行拓扑排序()。
3.连通分量是无向图中的极小连通子图()
四、综合题
1.证明n个顶点的无向完全图的边数的n(n-1)/2。
2.证明一个有n个顶点,e条边的无向图G,必有∑dj=2e其中dj为顶点j的度。
3.证明若无向图G的顶点度数的最小值大于或等于2,则G有一条回路。
4.设无向图G如下图:
BE
ADG
CF
试给出
(1)该图的邻接矩阵;
(2)该图的邻接表;
(3)从A出发的“深度优先”遍历序列;
(4)从A出发的“广度优先”遍历序列。
第九章
一、选择题
1.二分法查找存储结构。
A.只适用于顺序B.只适用于链式C.既适用于顺序也适用于链式
D.既不适合于顺序也不适合于链式
2.已知一个有序表为(12、18、24、35、47、50、62、83、90、115、134),当二分查找值为90的元素时,次比较后查找成功;当二分查找值为47的元素时,次比较后查找成功。
A.1B.2C.3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 习题集