数据结构习题.docx

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

数据结构习题.docx

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

数据结构习题.docx

数据结构习题

数据结构习题(无答案)

习题

第1章习题

一、选择题

1、下列关于算法的说法,正确的是。

A.算法的可行性是指指令不能有二义性

B.算法最终必须由计算机程序实现

C.程序一定是算法

D.为解决某问题的算法与为该问题编写的程序含义是相同的

2、以下关于数据的存储结构的叙述中,正确的有。

A.顺序存储方式只能用于存储线性结构

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

C.链表的每个节点中都恰好包含一个指针

D.散列法存储的基本思想是由关键字的值决定数据的存储地址

E.散列表的节点只包含数据元素自身的信息,不包含任何指针

3、下列说法正确的是。

A.数据元素是具有独立意义的最小标识单位

B.原子类型的值不可再分解

C.原子类型的值由若干个数据项值组成

D.结构类型的值不可以再分解

二、判断题

1、数据项是具有独立含义的最小标识单位。

2、数据的逻辑结构是指各数据元素之间的逻辑关系,与物理结构无关。

3、运算的定义依赖于逻辑结构,运算的实现也依赖于逻辑结构,而与存储结构无关。

4、数据结构是指相互之间存在一种或多种关系的数据元素的全体。

三、填空题

1、数据的逻辑结构被分为、、、四种。

2、当问题规模n趋向无穷大时,算法执行时间T(n)的数量级被称为算法的。

3、时间复杂度在最好和最坏情况下分别是和。

4、通常从正确性、、及时空效率等四个方面评价算法的质量。

5、数据的存储结构主要有顺序存储、、和四种。

四、算法设计

1、写一算法,从键盘输入若干个非0整数(以0作为结束标志),找出其中最大和最小的数,并分析算法的时间复杂度(输入数据不需保存)。

2、在数组A[1..n]中查找值为K的元素,若找到则输出其位置i(1≤i≤n),否则输出0作为没有找到的标志,并分析算法的时间复杂度。

 

第2章习题

一、选择题

1、线性表在链式存储中,各结点之间的地址是。

A.必须连续B.部分地址必须连续C.不能连续D.连续与否无所谓

2、对单链表表示法,以下说法错误的是。

A.数据域用于存储线性表的一个数据元素B.指针域用于存放直接后继结点的指针

C.所有数据通过指针的链接而组成单链表D.单链表中各结点地址不可能连续

3、某线性表中最常用的操作是在最后一个元素之后插入一个数据和删除第一个元素,则采用存储方式最节省运算时间。

A.单链表B.仅有尾指针的单循环链表C.双向链表D.仅有头指针的单循环链表

4、线性表(a1,a2,....,an)以链式方式存储时,访问第i个元素的时间复杂性为。

A.O(n)B.O

(1)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=A∩B。

 

第3章习题

一、选择题

1、栈与一般线性表的区别在于。

A.数据元素的类型不同B.数据元素的个数不同C.运算是否受限制D.逻辑数据不同

2、设有一顺序栈S,元素s1,s2,s3,s4,s5,s6依次进栈,如果6个元素出栈的顺序是s2,s4,s3,s6,s5,s1,则栈的容量至少应该是。

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

3、若已知一个栈的入栈序列是1,2,3,…,30,其输出序列是p1,p2,p3,…,pn,若p1=30,则p10为。

A.11B.20C.30D.21

4、循环队列A[m]存放其元素,用front和rear分别表示队头及队尾,则循环队列满的条件是。

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

C.Q->rear==Q->front+1D.Q->rear==Q->front

5、设abcdef以所给的次序进栈,若在进栈操作时,允许出栈操作,则下面得不到的序列是。

A.fedcbaB.cabdefC.dcefbaD.bcafed

二、判断题

1、消除递归一定需要使用栈。

2、栈与队列是一种特殊的线性表。

3、队列逻辑上是一端既能增加又能减少的线性表。

4、任何一个递归过程都可以转换为非递归过程。

三、填空题

1、已知一个栈s的输入序列为abcd,判断下面两个序列能否通过的Push和Pop操作输出:

(1)dbca。

(2)cbda。

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

3、已知链队列的头尾指针分别是f和r,则将值x入队的操作序列是。

四、算法设计

1、已知Q是一个非空队列,S是一个空栈,仅用队列和栈的基本操作和少量工作变量,编写一个算法,将队列Q中的所有元素逆置。

2、假设称正读和反读都相同的字符序列为“回文”,例如“123321”、“abcdedcba”是回文,“asdasd”不是回文。

试编写一个算法判断读入的一个以“@”为结束符的字符序列是否为回文。

第4、5章习题

一、选择题

1、下列关于串的叙述中,不正确的是。

A.串是字符的有限序列B.模式匹配是串的一种重要运算

C.空串是由空格构成的串D.串既可采用顺序存储,也可以采用链式存储

2、已知串S=“aaab”,其next数组值为。

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

3、串"ababaabab"的next数组值为。

A.0,1,2,3,4,5,6,7,8B.0,1,1,2,3,4,5,3,4

C.0,1,2,1,2,1,1,1,2D.0,1,2,3,0,1,2,2,2

4、在执行简单的串匹配算法时,最坏的情况为每次匹配比较不等的字符出现的位置为。

A.主串的最末字符B.模式串的第一个字符

C.主串的第一个字符D.模式串的最末字符

二、判断题

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

2、空串与空格串是相同的。

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

4、从串中取若干个字符组成的字符序列称为串的子串。

三、填空题

1、两个串相等的充分必要条件是。

串长度相等且对应位置上的字符也相等

2、StrIndex("MYSTUDENT","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))

(2)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.二叉树中结点个数必大于0

D.二叉树的度为2

2、对一个满二叉树,m个树枝,n个结点,深度为h,则。

A.n=h+mB.h+m=2nC.m=h-1D.n=2h-1

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

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

4、将含有150个结点的完全二叉树从根这一层开始,每一层从左到右依次对结点进行编号,根结点的编号为1,则编号为69的结点的双亲结点的编号为。

A.33B.34C.35D.36

5、在一棵二叉树结点的先序序列、中序序列、后序序列中,所有叶子结点的先后顺序。

A.都不相同B.先序和中序相同,而与后序不同

C.完全相同D.中序和后序相同,而与先序不同

6、一棵二叉树满足下列条件:

对任意一个结点,若存在左、右子树,则其值都小于它的左子树上的所有结点的值,而大于右子树上所有结点的值。

现采用遍历方式就可以得到这棵二叉树上所有结点的递减序列。

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

7、由3个结点可以构造出种不同的二叉树。

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

8、设给定权值的叶子总数有n个,其赫夫曼树的结点总数为。

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

9、某二叉树的先序遍历序列和后序遍历序列正好相反,则此二叉树一定是。

A.高度等于结点数B.完全二叉树C.单支树D.空或只有一个结点

10、在一棵三叉树中,已知度为3的结点数等于5,度为0的结点数等于17,则度为2的结点数等于。

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

二、判断题

1、有非空的一棵二叉树,已知先序和后序遍历的序列,则能惟一确定该二叉树。

2、完全二叉树中,若一个结点没有左孩子,则它一定是叶子。

3、将一棵树转换成二叉树后,根结点没有左子树。

4、必须把一般树转换成二叉树后才能存储。

三、填空题

1、已知二叉树有10个叶子结点,则该二叉树的总结点数至少是。

2、叶子权值(3,6,7,2)所构造的赫夫曼树带权路径长度为。

3、N个结点的二叉树按某种遍历规则对结点从1到N依次递增编号,若:

(1)任一结点的编号等于它的左子树中最小编号减1,则为遍历;

(2)某结点右子树中最小编号等于左子树中的最大编号加1,则为遍历。

4、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.6D.7

2、在一个无向图中,所有顶点的度数之和等于所有边数B倍,在一个有向图中,所有顶点的入度之和等于所有顶点出度之和的C倍。

A.

B.2C.1D.4

3、下列图的邻接矩阵是对称矩阵的是。

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

4、关键路径是指AOE(ActivityOnEdge)网中。

A.最长的回路B.最短的回路C.从源点到汇点的最长路径D.从源点到汇点的最短路径

5、在有向图的邻接表存储结构中,顶点v在链表结点中出现的次数是。

A.顶点v的入度B.顶点v的出度C.顶点v的度D.依附于顶点v的边数

6、下面的叙述中,不正确的是。

A.任何关键活动不按期完成就会影响整个工程的完成时间

B.任何一个关键活动提前完成,将使整个工程提前完成

C.所有关键活动都提前完成,将使整个工程提前完成

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.a,b,e,c,d,fB.a,c,f,e,b,dC.a,e,b,c,f,dD.a,e,d,f,c,b

8、G是一个非连通的无向图,共有28条边,则该图至少有个顶点。

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

9、下面方法可以判断出一个有向图是否有环(回路)。

A.深度优先遍历B.求最短路径C.拓扑排序D.求关键路径

10、在有向图G的拓扑排序中,若顶点vi在顶点vj之前,则下列情形不可能出现的是。

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=0;i

for(j=0;j

for(k=0;k

scanf(&v1,&v2);//输入一条边所依附的顶点

i=LocateVex(G,v1);j=LocateVex(G,v2);//确定v1和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)邻接矩阵

(3)邻接表

(4)强连同分量

2、给出下图所示图(a)和图(b),按照下列条件分别写出从顶点v0出发按深度优先搜索遍历得到的顶点序列和按广度优先搜索遍历得到的顶点序列。

假定它们采用邻接表表示,并且假定每个顶点邻接表中的节点是按顶点序号从大到小的次序链接的。

 

3、对于下图,画出最小生成树:

(1)从顶点v0出发,按照Prim算法求出最小生成树;

(2)按照Kruskal算法求出最小生成树。

4、写出下图全部不同的拓扑排序序列。

第3题第4题

 

第9章、第10章习题

一、选择题

1、若查找每个元素的概率相等,则在长度为n的顺序表上查找到表中任一元素的平均查找长度为。

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

2、设哈希地址空间为0~m-1,k为记录的关键字,哈希函数采用除留余数法,即H(k)=k%p,为了减少发生冲突的频率,一般取p为。

A.mB.大于m的最小质数C.小于或等于m的最大质数D.小于等于m的最大合数

3、对包含n个元素的哈希表进行查找,平均查找长度。

A.为O(n)B.与装填因子有关C.为O(log2n)D.与n无关

4、若有m个关键字互为同义词,若用线性探测法处理冲突,把这m个元素存入哈希表中,至少要进行次探测。

A.m(m+1)/2B.m+1C.mD.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个元素组成堆的深度为

+1。

三、填空题

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)假定每个元素的查找概率相等,试计算该二叉排序树的平均查找长度。

2、对下面的3阶B-树,依次执行下列操作,画出各步操作的结果。

(1)插入90

(2)插入25(3)插入45(4)删除60(5)删除80

3、给定关键码序列(26,25,20,33,21,24,45,204,42,38,29,31),要用哈希法进行存储,规定装填因子α=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,21};

(2){12,70,33,65,24,56,48,92,86,33};

(3){05,56,20,23,40,38,29,61,35,76,28,100};

 

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

当前位置:首页 > PPT模板 > 中国风

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

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