《数据结构》习题集Word下载.docx
- 文档编号:16207964
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:13
- 大小:87.64KB
《数据结构》习题集Word下载.docx
《《数据结构》习题集Word下载.docx》由会员分享,可在线阅读,更多相关《《数据结构》习题集Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
)
();
{
△*;
}();
(≤){
△(<
);
是不小于的常数
(>
()*()){
△;
(>
){
△(>
){;
;
()(;
<
;
)
(;
(;
△;
试写一算法,自大至小依次输出顺序读入的三个整数和的值。
已知阶斐波那契序列的定义为:
,……,,;
……,,……
试编写求阶斐波那契序列的第项值的函数算法,和均以值调用的形式在函数参数表中出现。
第二章线性表
描述以下三个概念的区别:
头指针、头结点、首元结点。
描述以下几个概念:
顺序存储结构、链式存储结构、顺序表、有序表。
已知顺序表中数据元素按非递减有序排列。
试写一个算法,将元素插到的合适位置上,保持该表的有序性。
已知单链表中数据元素按非递减有序排列。
按两种不同情况,分别写出算法,将元素插到的合适位置上,保持该表的有序性:
()带头结点;
()不带头结点。
试写一个算法,实现顺序表的就地逆置,即在原表的存储空间将线性表(,...,)逆置为(,...,)
试写一个算法,对带头结点的单链表实现就地逆置。
已知线性表采用顺序存储结构存放。
对两种不同情况分别写出算法,删除中值相同的多余元素,使得中没有重复元素:
()中数据元素无序排列;
()中数据元素非递减有序排列。
将题中的存储结构改为单链表,写出相应的实现算法。
设有两个非递减有序的单链表和。
请写出算法,将和“就地”归并成一个按元素值非递增有序的单链表。
设有一个长度大于的单向循环链表,表中既无头结点,也无头指针,为指向表中某个结点的指针,如图所示。
试编写一个算法,删除链表中指针所指结点的直接前驱。
已知线性表用带头结点的单链表表示,表中结点由三类字符组成:
字母、数字和其他字符。
试编写算法,将该线性链表分割成三个循环单链表,每个循环单链表中均只含有一类字符。
已知线性表用顺序存储结构表示,表中数据元素为个正整数。
试写一算法,分离该表中的奇数和偶数,使得所有奇数集中放在左侧,偶数集中放在右侧。
要求:
()不借助辅助数组;
()时间复杂度为()。
设以带头结点的双向循环链表表示的线性表()。
试写一时间复杂度为()的算法,将改造为()。
第三章栈和队列
简述栈和线性表的差别。
如果进栈序列为、、、,写出所有可能的出栈序列。
简述栈和队列的相同点和差异。
已知栈中存放了个数据元素,自栈底至栈顶依次为()。
()写出在执行了函数调用()后,中的元素序列。
()在()的基础上,又执行了函数调用(),写出此时中的元素序列。
(){
[],,;
(()){;
(,[]);
(;
)(,[]);
}
(,){
();
(()){
()();
已知队列中自队头至队尾依次存放着()。
写出在执行了函数调用()后,中的元素序列。
试写一个算法,识别依次读入的一个以为结束符的字符序列是否为形如“序列序列”模式的字符序列。
其中,序列和序列中都不包含字符‘’,且序列是序列的逆序。
例如,“”是属于该模式的字符序列,而“+-”则不是。
假设一个算术表达式中可以包含三种符号:
圆括号“(”和“)”、方括号“[”和“]”、花括号“{”和“}”,且这三种括号可按任意次序嵌套使用。
编写判别给定表达式中所含的括号是否正确配对的算法(已知表达式已存入数据元素为字符的顺序表中)。
设表达式由单字母变量、双目运算符和圆括号组成(如:
“(*()))”。
试写一个算法,将一个书写正确的表达式转换为逆波兰式。
试用类写一个算法,对逆波兰式求值。
假设以带头结点的单循环链表表示队列,只设一个尾指针指向队尾元素,不设头指针。
试编写相应的队列初始化、入队和出队的算法。
假设将循环队列定义为:
以和分别指示队尾元素和队列长度。
试给出此循环队列的队满条件,并写出相应的入队和出队算法(在出队算法中要传递回队头元素的值)。
试写一个算法:
判别读入的一个以‘’为结束符的字符序列是否是“回文”(所谓“回文”是指正读和反读都相同的字符序列,如“”是回文,而“”则不是回文)。
第五章多维数组
已知多维数组[][][][]按行优先方式存储。
试按存储位置的先后次序,列出所有数组元素[][][][]序列(为了简化表达,可以只列出形如“”的序列,如元素[][][][]可表示为“”)。
假设有一个二维数组[][],每个元素占个字节,首元素[][]的地址为,求:
()的体积;
()最后一个元素[][]的地址;
()按行主序方式存储时,[][]的地址;
()按列主序方式存储时,[][]的地址;
设有上三角矩阵×
,
将其上三角的元素逐行存于数组[]中(充分大),使得[]且=()()。
试推导出函数、和常数(要求和中不含常数项)。
设有一个准对角矩阵
按以下方式存于一维数组[]中:
...
写出由一对下标()求的转换公式。
已知稀疏矩阵×
如下:
()用三元组表作为存储结构,绘出相应的三元组表示意图;
()用十字链表作为存储结构,绘出相应的十字链表示意图。
设稀疏矩阵和均以三元组顺序表作为存储结构。
试写出计算矩阵相加=+的算法,其中,是另设的、存放结果的三元组表(提示:
可用类似于两个有序顺序表归并的处理方法)。
试编写一个算法,实现以三元组的形式打印用十字链表表示的稀疏矩阵中所有非零元素及其下标。
试编写一个算法,实现以矩形阵列的形式打印用十字链表表示的稀疏矩阵。
第六章树和二叉树
试分别绘出具有个结点的树和个结点的二叉树的所有不同形态。
设结点是二叉树上一个度为的结点,有几个子树?
描述满足下列条件的二叉树形态:
()先序遍历序列与中序遍历序列相同;
()后序遍历序列与中序遍历序列相同;
()先序遍历序列与后序遍历序列相同;
一个深度为的满叉树有如下性质:
第层上所有结点都是叶子结点,其余各层上每个结点都有棵非空子树。
如果从开始按自上而下、自左向右的次序对全部结点编号,问:
()各层的结点数目是多少?
()编号为的结点的父结点(若存在)的编号是多少?
()编号为的结点的第个孩子(若存在)的编号是多少?
()编号为的结点有右兄弟的条件是什么?
其右兄弟的编号是多少?
已知一棵度为的树中有个度为的结点,个度为的结点,...,个度为的结点,问该树中有多少个叶子结点?
已知在一棵含有个结点的树中,只有度为的分支结点和度为的叶子结点。
试求该树含有的叶子结点的数目。
设和为二叉树中两个结点,用“”、“”、和“∅”(分别表示肯定,否定和不一定)填写下表:
已知问
先序遍历时
在之前?
中序遍历时
后序遍历时
在左方
在右方
是祖先
∅
是子孙
(注:
如果离和的最近的共同祖先存在,且位于的左子树中,位于的右子树中,则称“在的左方”或“在的右方”。
已知一棵树如图所示,画出与该树对应的二叉树,并写出该树的先根遍历序列和后根遍历序列。
将如图所示的森林转化为对应的二叉树。
画出和下列二叉树(如图所示)相应的森林。
已知某二叉树的中序序列为,后序序列为。
请画出该二叉树。
已知树的先根遍历访问序列为,后根遍历访问序列为。
请画出树。
已知森林的先根遍历访问序列为,中根遍历访问序列为。
请画出这个森林。
假设某个电文由()个字母组成,每个字母在电文中出现的次数分别为(),试解答下列问题:
()画出出树;
()写出每个字母的编码;
()在对该电文进行最优二进制编码处理后,电文的二进制位数。
写出复制一棵二叉树的算法。
试编写算法,实现将二叉树所有结点的左右子树互换。
写出按层次遍历二叉树的算法。
写出判断给定二叉树是否为完全二叉树的算法。
写出判断两棵给定二叉树是否相似的算法。
两棵二叉树和相似是指:
和皆空,或者皆不空且的左、右子树和的左、右子树分别相似。
利用栈的基本操作,写出二叉树先序遍历的非递归算法。
写出统计树中叶子结点个数的算法,树用孩子兄弟链表表示。
写出计算树的深度的算法,树用孩子兄弟链表表示。
写出计算二叉树第层结点数的算法。
写出计算二叉树深度的算法。
第七章图
已知有向图如图所示,
请给出该图的
()邻接矩阵示意图
()邻接表示意图
()逆邻接表
()所有强连通分量
已知图的邻接矩阵如图所示。
写出该图从顶点出发的深度优先搜索序列和广度优先搜索序列,并画出相应的深度优先生成树和广度优先生成树。
图
无向带权图如图所示,
()画出它的邻接矩阵,并按算法求其最小生成树。
()画出它的邻接表,并按算法求其最小生成树
有向图如图所示,试写出其所有可能的拓扑序列。
试利用算法求图中顶点到其他各顶点之间的最短路径。
要求写出执行算法过程中,数组、和各步的状态。
试在邻接矩阵存储结构上实现图的基本操作:
(),
(),()和()。
试在邻接表存储结构上实现图的基本操作:
设具有个顶点的有向图用邻接表存储。
试写出计算所有顶点入度的算法,可将每个顶点的入度值分别存入一维数组[]中。
假设有向图以邻接表作为存储结构。
试基于图的深度优先搜索策略写一算法,判断有向图中是否存在由顶点至顶点()的路径。
试基于图的广度优先搜索策略写一算法,判断有向图中是否存在由顶点至顶点()的路径。
以邻接表作为存储结构,实现求单源最短路径的算法。
第九章查找
若对大小均为的有序顺序表和无序顺序表分别进行顺序查找,试在下列三种情况下分别讨论两者在等概率时平均查找长度是否相同?
()查找不成功,即表中没有关键字等于给的值的记录;
()查找成功,且表中只有一个关键字等于给定值的记录;
()查找成功,且表中有若干个关键字等于给定值的记录,要求找出所有这些记录。
试分别写出在对有序线性表()中进行折半查找,查值等于、和的元素时,先后与哪些元素进行了比较。
画出对长度为的有序表进行折半查找的判定树,并分别求其等概率时查找成功和查找失败的。
已知如下所示长度为的表:
(,,,,,,,,,,,)
表中,每个元素的查找概率分别为:
()
()若对该表进行顺序查找,求查找成功的平均查找长度;
()画出从初态为空开始,依次插入结点,生成的二叉排序树;
()计算该二叉排序树查找成功的平均查找长度;
()将二叉排序树中的结点删除,画出经过删除处理后的二叉排序树。
已知关键字序列{},哈希地址空间为~,哈希函数为(),求:
(1)用开放定址线性探测法处理冲突,构造哈希表,分别计算在等概率情况下查找成功和查找失败的;
(2)用开放定址二次探测法处理冲突,构造哈希表,计算在等概率情况下查找成功的;
(3)用拉链法解决冲突,构造哈希表,计算在等概率情况查找成功的。
写出折半查找的递归算法。
写出判别一棵二叉树是否为二叉排序树的算法,设二叉排序树中不存在关键字值相同的结点。
假设哈希表长为,哈希函数为(),用链地址法解决冲突。
编写输入一组关键字,建造哈希表的算法。
第十章内部排序
以关键字序列(,,,,,,,,,)为例,手工执行下列排序算法,写出每一趟排序结束时关键字序列状态
()直接插入排序()希尔排序(取增量为,,)
()快速排序()冒泡排序
()归并排序()堆排序
题中哪些排序方法是稳定的,哪些是不稳定的?
并为每种不稳定的排序方法举一个不稳定的实例。
判别以下序列是否为堆(小顶堆或大顶堆),若不是,则吧它调整为堆
()();
编写一个双向起泡的排序算法,即相邻两遍向相反方向起泡。
试以单链表为存储结构,实现简单选择排序算法。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 习题集