第2章习题
,、选择题
1、线性表在链式存储中,各结点之间的地
A.必须连续B.部分地址必须连续C.
能连续D.连续与否无所谓
2、对单链表表示法,以下说法错误的是。
A.数据域用于存储线性表的一个数据元素B.
指针域用于存放直接后继结点的指针
C.所有数据通过指针的链接而组成单链表D.
单链表中各结点地址不可能连续
3、某线性表中最常用的操作是在最后一个元素之后插入一个数据和删除第一个元素,则采用存储方式最节省运算时间。
A.单链表B.仅有尾指针的单循环链表C.双
4、线性表(ai,a2,....,an)以链式方式存储时,访问第i个元素的时间复杂性为。
A.0(n)B.0⑴C.O(i)
D.O(i-1)
二、判断题
1、顺序表可以用一维数组表示,因此顺序表与一维数组在结构上是一致的,可以通用。
2、顺序存储方式插入和删除时效率太低,因此它不如链式存储方式好。
3、链式存储结构中,访问任何结点都必须从表头开始。
4、循环链表可以在尾部设置头指针。
二、填空题
1、已知L是无表头结点的单链表,且P结点即不是
首结点,也不是尾结点,试在下述要求中填上适合的语句序列。
(1)在P结点之后插入S结点语句序
列
S->next=p->next;p->next=S;
(2)在P结点之前插入S结点语句序
列
pre=L;while(pre->next!
=P)pre=pre->next;S->next=pre->next
P;pre->next=S;
2、已知P结点是某双向链表中的中间结点,请填空。
(1)在P结点之后插入S结点的语句序
S->next=P->next;
S->prior=P;P->next->prior=S;P->next=S;
(2)删除P结点的直接后继结点的语句列。
Q->P->next;P->next=Q->next;Q->next->prior=P;
free(Q);
四、算法设计
1、设L为带头结点的单链表,编写算法,删除链表中值相同的元素,并分析算法时间复杂性。
假设单链表L元素递增有序。
2、已知递增有序的两个单链表A,B分别存储了一个集合。
设计算法实现求两个集合的交集运算a=an
第3章习题
一、选择题
1、栈与一般线性表的区别在于。
A.数据元素的类型不同B.数据元素的个数不同
C.运算是否受限制D.逻辑数据不同
2、设有一顺序栈S,元素s1,s2,s3,s4,s5,s依次进栈,
如果6个元素出栈的顺序是s2,s4,s3,s6,s5,s;1则栈的容量至少应该是。
A.3B.4C.5
D.6
3、若已知一个栈的入栈序列是1,2,3,…,30,其输出序列是p1,p2,p3,…,pn,若p1=30,则p10为。
A.11B.20C.30
D.21
4、循环队列A[m]存放其元素,用front和rear分别
表示队头及队尾,则循环队列满的条件是。
A.(Q->rear+1)%m==Q->frontB.Q->rea叶1
==Q->front
C.Q->rear==Q->front+1D.Q->rear
==Q->front
5、设abcdef以所给的次序进栈,若在进栈操作时,
允许出栈操作,则下面得不到的序列是。
A.fedcbaB.cabdef
C.dcefbaD.bcafed
二、判断题
1、消除递归一定需要使用栈。
2、栈与队列是一种特殊的线性表。
4、
1、
序
3、队列逻辑上是一端既能增加又能减少的线性表。
任何一个递归过程都可以转换为非递归过程。
、填空题
已知一个栈s的输入序列为abed,判断下面两个列能否通过的Push和Pop操作输出:
(2
(1)dbeaebda
2、
入后
3、
入
四
1、
列将
2、
假设以S和X分别表示入栈和出栈操作,则对输序列a,b,c,d,e进行一系列栈操作SSXSXSSXX之,得到的输出序列是已知链队列的头尾指针分别是f和r,则将值
队的操作序列是
、算法设计
已知Q是一个非空队列,S是一个空栈,仅用队和栈的基本操作和少量工作变量,编写一个算法,队列Q中的所有元素逆置。
假设称正读和反读都相同的字符序列为"回文"例如“123321"、“abededeba"是回文,“asdasd"是回文。
试编写一个算法判断读入的一个以“@”为结束符的字符序列是否为回文。
第4、5章习题
一、选择题
1、下列关于串的叙述中,不正确的是_
串是字符的有限序列串的一种重要运算空串是由空格构成的串顺序存储,也可以采用链式存储已知串S=“aaab",其next数组值为
A.
是
C.
用
2、
O
B.模式匹配
D.串既可采
A.0,1,2,3B.1,1,2,3C.1,2,3,1
121,1
串"ababaabab"的next数组值为。
B.0,1,1,2,3,4,5,3,4
D.
3、
A.0,1,2,3,4,5,6,7,8C.
4、
匹
A.
字
C.
符
0,1,2,121,1,1,2D.0,1,2,3,0,1,2,2,2
在执行简单的串匹配算法时,最坏的情况为每次配比较不等的字符出现的位置为。
主串的最末字符B.模式串的第一个
符主串的第一个字符
D.模式串的最末字
、判断题
1、串是一种数据对象和操作都特殊的线性表。
2、空串与空格串是相同的。
3、KMP算法的特点是在模式匹配时指示主串的指针
不会变小。
4、从串中取若干个字符组成的字符序列称为串的子串。
三、填空题
1、两个串相等的充分必要条件是。
串长度相等且对应位置上的字符也相等
2、Strlndex("MY
STUDENT","STU")=。
四、算法设计
1、利用C的库函数strlen,strcpy写一算法voidStrDelete(char*S,inti,intm),删除串S中从位置i开始的连续m个字符。
若i>strlen(S),则没有字符被删除;若i+m>strlen(S),则将S中位置i开始直至末尾的字符都删去。
2、设s,t为两个字符串,试写一算法判断t是否为s的子串。
五、简答题
求下面各广义表的操作结果。
(1)GetHead((a,(b,c),d))
⑵GetTail((a,(b,c),d))
(3)GetHead(GetTail((a,(b,c),d)))
(4)GetTail(GetHead((a,(b,c),d)))
第6章习题
一、选择题
1、下面关于二叉树的描述中,正确的是
A.二叉树中,度为0的结点个数等于度为2的结个数加1
B.完全二叉树中,任何一个结点的度或者为0,
者为2
C.
D.
2、
h,
A.
D.n=2h-1
3、以二叉链表作为二叉树的存储结构,在有n个点的二叉链表中(n>0),链表中空链的个数为—
A.2n-1B.n-1C.n
D.2n+1
4、将含有150个结点的完全二叉树从根这一层开始,每一层从左到右依次对结点进行编号,根结点的编号为1,则编号为69的结点的双亲结点的编号为
o
占
八、、
二叉树中结点个数必大于0二叉树的度为2
对一个满二叉树,m个树枝,n个结点,深度为则。
n=h+m
-h|
B.h+m=2n
C.m=h
-1
+1
A.33B.34C.35
D.36
5、在一棵二叉树结点的先序序列、中序序列、后序
序列中,所有叶子结点的先后顺序。
A.都不相同B.先序和中序相同,而与后序
不同
C.完全相同D.中序和后序相同,而与先序
不同
6、一棵二叉树满足下列条件:
对任意一个结点,若存在左、右子树,则其值都小于它的左子树上的所有结点的值,而大于右子树上所有结点的值。
现采用遍历方式就可以得到这棵二叉树上所有结点的递减序列。
A.
先序
B.中序
C.后序
D.
层次
7、
由3个结点可以构造出
种不同的二叉树。
A.
3
B.4
C.
5
D.
6
8设给定权值的叶子总数有n个,其赫夫曼树的结点总数为。
A.不确定B.2nC.2n+1
D.2n-1
9、某二叉树的先序遍历序列和后序遍历序列正好相
C.单
反,则此二叉树一定是。
A.高度等于结点数B.完全二叉树
支树D.空或只有一个结点10、在一棵三叉树中,已知度为3的结点数等于5,
度为0的结点数等于17,则度为2的结点数等于。
A.6B.5C.4
D.3
、判断题
1、有非空的一棵二叉树,已知先序和后序遍历的序列,则能惟一确定该二叉树。
2、完全二叉树中,若一个结点没有左孩子,则它一定是叶子。
3、将一棵树转换成二叉树后,根结点没有左子树。
4、必须把一般树转换成二叉树后才能存储。
三、填空题
1、已知二叉树有10个叶子结点,则该二叉树的总结点数至少是。
2、叶子权值(3,6,7,2)所构造的赫夫曼树带权路径长度为。
3、N个结点的二叉树按某种遍历规则对结点从1到N
依次递增编号,若:
(1)任一结点的编号等于它的左子树中最小编号减
1,则为遍历;
(2)某结点右子树中最小编号等于左子树中的最大号加1,则为
40个结点的完全二叉树,编号最大的非叶子结点
号结点,编号最小的叶子结点是号
四
1、
2、
、算法设计
写出中序遍历的递归和非递归算法。
编写一算法,计算二叉树T中结点的个数。
、简答题
1、
历
写出下列二叉树的先序遍历、中序遍历、后序遍序列。
2、给定一组数列(15,8,10,21,6,19,3)分别代表字
符A,B,C,D,E,F,G出现的频度,试画出哈夫曼树,给出各字符的编码值。
第7章习题
一、选择题
1、具有5个顶点的有向图至少应有条边才能
确保一个强连通图。
A.4B.5C.6
D.7
2、在一个无向图中,所有顶点的度数之和等于所有
边数B倍,在一个有向图中,所有顶点的入度之和等于所有顶点出度之和的C倍。
A-2B.2CD.4
3、下列图的邻接矩阵是对称矩阵的是。
A.有向图B.AOV网C.AOE网
D.无向图
中。
A.最长的回路B.最短的回路C.从源点到汇点的最长路径D.从源点到汇点的最短路径
5、在有向图的邻接表存储结构中,顶点v在链表结
点中出现的次数是。
A.顶点v的入度B.顶点v的出度C.顶点v的度D.依附于顶点v的边数
6、下面的叙述中,不正确的是。
A.任何关键活动不按期完成就会影响整个工程的完成时间
B.任何一个关键活动提前完成,将使整个工程提前完成
C.所有关键活动都提前完成,将使整个工程提前完
成I
D.所有关键活动不按期完成就会影响整个工程的完成时间
7、无向图G=(V,E),其中V={a,b,c,d,e,f},E={(a,b),(a,e),(a,c),(b,e),(c,f),(f,d),(e,d)},对该图进行深度优先遍历,得到的顶点序列是。
a,e,b,c,f,dD.a,e,d,f,c,b
8G是一个非连通的无向图,共有28条边,则该图至少有个顶点。
A.9
D.6
9、下面方法可以判断出一个有向图是否有环
(回路)
A.深度优先遍历B.求最短路径C.拓扑排
序D.求关键路径
vj
中
中
10、在有向图G的拓扑排序中,若顶点vi在顶点之前,则下列情形不可能出现的是。
A.G中有弧B.G
没有弧
C.G中有一条从vi到vj的路径D.G
有一条从vj到vi的路径
、判断题
1、对任意一个图,从它的某个顶点出发,进行一次深度优先或广度优先搜索,即可访问图的每个顶点。
2、有n个顶点的无向图,采用邻接矩阵表示,图中的边数等于邻接矩阵中非零元素之和的一半。
3、任何有向图的结点都可以排成拓扑排序,而且拓扑序列不惟一。
4、在n个顶点的无向图中,若边数大于n-1,则该
图一定是连通图。
5、图的深度优先遍历序列是不惟一的
6、连通图上各边的权值均不相同,则该图的最小生成树一定惟一。
二、填空题
1、n个顶点的连通图用邻接矩阵表示时,该矩阵至
少有个非零元素。
2、在有向图的邻接矩阵中,计算第i个顶点入度的
方法是。
3、有向图G可以进行拓扑排序的条件是。
4、AOV网中,顶点表示,边表示
AOE网中,顶点表示,边表示。
四、算法设计
1、已知图G是无向图,编写一个算法,将图G用邻接矩阵表示。
(即构造无向图createUDG(MGraph&G)的邻接矩阵算法)。
参考算法:
StatuscreateUDG(MGraph&G)//构造无向图G
{scanf(&G.vexnum,&G.arcnum);//输入无向图的顶点和边的
个数
for(i=0;i构造顶点向量
for(i=O;ifor(j=0;jfor(k=0;kscanf(&v1,&v2);//输入一条边所依附的顶点
v1
确定
称边
i=LocateVex(G,v1);j=LocateVex(G,v2);〃和v2在g中位置
G.arcs[i][j].adj=1;//说明相关联
if(IncInfo)Input(*G>arcs[i][j].info);
信息,则输入
//置的对
G.arcs[j][i]=G.arcs[i][j];
}
returnOK;
1、
、简答题
如图所示为一个有向图,试给出:
(1)每个顶点的入度和出度
(2)邻接矩阵
⑶邻接表
(4)强连同分量
2、给出下图所示图(a)和图(b),按照下列条件分别写出从顶点v0出发按深度优先搜索遍历得到的顶点序列和按广度优先搜索遍历得到的顶点序列假定它们采用邻接表表示,
中的节点是按顶点序号从大
1■■6:
5I4
图
3、对于下图,画出最小生成树:
(1)从顶点v0出发,按照Prim算法求出最小生成树;
(2)
按照Kruskal算法求出最小生成树。
9章、第10章习题
、选择题
若查找每个元素的概率相等,则在长度为
哈希函数采用除留余数法,即H(k)=k%p,为了减少发生冲突的频率,一般取p为。
A.mB.大于m的最小质数C.小于或等于m的最大质数D.小于等于m的最大合数
3、对包含n个元素的哈希表进行查找,平均查找长
度。
A.为0(n)B.与装填因子有关C.
为O(log2n)D.与n无关
4、若有m个关键字互为同义词,若用线性探测法处理冲突,把这m个元素存入哈希表中,至少要进行次探测。
A.m(m+1)/2B.m+1C.m
D.m-1
5、下列排序算法中,算法是不稳定的。
A.起泡排序B.直接插入排序C.归
并排序D.快速排序
6、数据(8,9,10,4,5,6,20,1,2只能是下列排序算法中的两趟排序后的结果。
A.选择排序B.起泡排序C.直接
插入排序D.堆排序
7、对数据序列(10,9,15,20,5,7,18,6,12,8,若用堆排
序的筛选方法建立的初始堆是;若用快速排序
法,用第一个元素与其他元素比较,排序一趟后的结果是;起泡排序排序一趟后的结果
是;初始增量为5的希尔排序一趟后的结果
A.5,6,7,10,8,15,18,20,12,9B.
9.10.15.5.7.18.12.6.8.20
C.5,9,6,8,7,10,18,15,20,12D.
8,9,6,7,5,10,18,20,12,15
E.7,9,6,12,5,10,18,15,20,8F.
9.10.15.5.7.18.6.12.8.20
G.以上都不对
二、判断题
1、进行折半查找的表必须是顺序存储的有序表。
2、对二叉排序树进行先序遍历得到的结点的值的序列是一个有序序列。
3、直接选择排序是一种稳定的排序算法。
4、在任何情况下,起泡排序比快速排序的速度慢。
5、堆排序采用的是顺序存储;小根堆的最大元素一
定是末端结点;n个元素组成堆的深度为log2n+1o
三、填空题
1、在n个元素的线性表中顺序查找,若查找成功,则关键字的比较次数最多为次,使用监视哨
时,若查找失败,则关键字的比较次数为次。
2、在线性表(2,3,5,9,12,17,23,30,34,40,42,49)
中,用折半查找法查找关键字为24的记录,关键字
的比较次数为次,所比较的元素依次
为。
3、排序算法的稳定性是
扌旨。
4、除基数排序外的其他排序算法,主要的两种基本
四、简答题
1、依次输
(30,15,28,20,24,10,12,68,35,50,46,55)素,
(1)
⑵
⑶
操作是和
生成一棵二叉排序树。
试画出生成之后的二叉排序树;
对该二叉排序树作中序遍历,试写出遍历序列假定每个元素的查找概率相等,试计算该二叉排序树的平均查找长度。
2、对下面的3阶B-树,依次执行下列操作,画出各步操作的结果。
(1)插入90
(2)插入25(3)插入45(4)
删除60(5)删除80
50
3080
/\/\
/\/\
/\/\
tMt__i__
820354060100
3、给定关键码序列
(26,25,20,33,21,24,45,204,42,38,29,31),要用
哈希法进行存储,规定装填因子a=0.6。
(1)请给出除余法的哈希函数。
(2)用开放定址线性探测法解决冲突,请画出插入所有的关键码后得到的哈希表。
4、设哈希函数为H(K)=KMOD11解决冲突的方法为链接法,试将下列关键字集合
{35,67,42,21,29,86,95,47,50,36,91}依次插入到
哈希表中(画出哈希表的示意图)。
并计算平均查找长度ASL
5、给出待排序序列的关键字序列为{26,31,75,41,87,
15,41,10,},请用堆排序的方法写出该序列的排序过程。
(设为大根堆)
6、给出待排序序列的关键字序列为{100,87,52,61,
27,170,37,45,61,118,14,88,32},请用快速排序的
方法写出该序列排序的过程
7、判别以下序列是否为堆(小根堆或大根堆)不是,则把它调整为堆。
(1){100,86,48,73,35,39,42,57,66,
⑵{12,70,33,65,24,56,48,92,86,
(3)
如果
21};
33};
76,
{05,56,20,23,40,38,29,61,35,28,100};