浙大版《数据结构(第2版)》题目集参考答案
浙大版《数据结构(第2版)》题目集参考答案
星辰大Hai
这个作者很懒,什么都没留下…
展开
-
习题3.14 另类堆栈
其中Stack/* 存储元素的数组 *//* 栈顶指针 *//* 堆栈最大容量 */注意:如果堆栈已满,Push函数必须输出“Stack Full”并且返回false;如果队列是空的,则Pop函数必须输出“Stack Empty”,并且返回ERROR。原创 2024-08-01 18:02:11 · 140 阅读 · 0 评论 -
习题3.13 双端队列
其中Deque/* 存储元素的数组 *//* 队列的头、尾指针 *//* 队列最大容量 */Push和Inject应该在正常执行完操作后返回true,或者在出现非正常情况时返回false。当Front和Rear相等时队列为空,Pop和Eject必须返回由裁判程序定义的ERROR。原创 2024-08-01 17:33:29 · 118 阅读 · 0 评论 -
习题3.12 另类循环队列
其中Queue/* 存储元素的数组 *//* 队列的头指针 */int Count;/* 队列中元素个数 *//* 队列最大容量 */注意:如果队列已满,AddQ函数必须输出“Queue Full”并且返回false;如果队列是空的,则DeleteQ函数必须输出“Queue Empty”,并且返回ERROR。原创 2024-08-01 16:28:46 · 174 阅读 · 0 评论 -
习题4.5 顺序存储的二叉树的最近的公共祖先问题
设顺序存储的二叉树中有编号为 i 和 j 的两个结点,请设计算法求出它们最近的公共祖先结点的编号和值。原创 2024-07-22 09:12:39 · 180 阅读 · 0 评论 -
练习4.3 堆中的路径
将一系列给定数字插入一个初始为空的最小堆 h。随后对任意给定的下标 i,打印从第 i 个结点到根结点的路径。原创 2024-07-22 08:21:19 · 168 阅读 · 0 评论 -
练习4.2 平衡二叉树的根
将给定的一系列数字插入初始为空的AVL树,请你输出最后生成的AVL树的根结点的值。原创 2024-07-21 20:44:01 · 415 阅读 · 0 评论 -
习题4.3 是否二叉搜索树
其中BinTree函数IsBST须判断给定的T是否二叉搜索树,即满足如下定义的二叉树:定义:一个二叉搜索树是一棵二叉树,它可以为空。非空左子树的所有键值小于其根结点的键值。非空右子树的所有键值大于其根结点的键值。左、右子树都是二叉搜索树。如果T是二叉搜索树,则函数返回true,否则返回false。原创 2024-07-21 19:55:08 · 535 阅读 · 0 评论 -
练习4.1 根据后序和中序遍历输出前序遍历
本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的前序遍历结果。原创 2024-07-21 19:19:29 · 320 阅读 · 0 评论 -
习题3.11 表达式转换
算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。日常使用的算术表达式是采用中缀表示法,即二元运算符位于两个运算数中间。请设计程序将中缀表达式转换为后缀表达式。原创 2024-07-16 17:34:41 · 559 阅读 · 0 评论 -
习题3.10 汉诺塔的非递归实现
借助堆栈以非递归(循环)方式求解汉诺塔的问题(n, a, b, c),即将N个盘子从起始柱(标记为“a”)通过借助柱(标记为“b”)移动到目标柱(标记为“c”),并保证每个移动符合汉诺塔问题的要求。原创 2024-07-16 15:26:36 · 358 阅读 · 0 评论 -
习题3.9 栈操作的合法性
假设以S和X分别表示入栈和出栈操作。如果根据一个仅由S和X构成的序列,对一个空堆栈进行操作,相应操作均可行(如没有出现删除时栈空)且最后状态也是栈空,则称该序列是合法的堆栈操作序列。请编写程序,输入S和X序列,判断该序列是否合法。原创 2024-07-14 17:21:49 · 100 阅读 · 0 评论 -
习题3.8 符号配对
*与*/与与与。原创 2024-07-14 16:45:49 · 155 阅读 · 0 评论 -
习题3.6 一元多项式的乘法与加法运算
设计函数分别求两个一元多项式的乘积与和。原创 2024-07-14 14:52:49 · 108 阅读 · 0 评论 -
习题3.5 求链表的倒数第m个元素
其中List/* 存储结点数据 *//* 指向下一个结点的指针 *//* 定义单链表类型 */L是给定的带头结点的单链表;函数Find要将L的倒数第m个元素返回,并不改变原链表。如果这样的元素不存在,则返回一个错误标志ERROR。原创 2024-07-14 11:58:01 · 151 阅读 · 0 评论 -
习题3.4 最长连续递增子序列
给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8)。原创 2024-07-14 11:35:31 · 135 阅读 · 0 评论 -
习题3.3 线性表元素的区间删除
其中List/* 保存线性表中最后一个元素在数组中的位置 */L是用户传入的一个线性表,其中元素可以通过>、==、<进行比较;minD和maxD分别为待删除元素的值域的下、上界。函数Delete应将Data[]中所有值大于minD而且小于maxD的元素删除,同时保证表中剩余元素保持顺序存储,并且相对位置不变,最后返回删除后的表。原创 2024-07-14 11:33:26 · 116 阅读 · 0 评论 -
习题2.7 弹球距离
其中h是球的初始高度,p是球弹起高度与弹起前落下高度的比值;函数dist要返回球下落后到基本停下来时在空中所经过的路程总和。注意:当弹起的高度小于裁判程序定义的常数TOL时,弹起的距离不计算在内。原创 2024-07-13 08:56:04 · 372 阅读 · 0 评论 -
习题2.8 输出全排列
回溯算法,整数全排列原创 2024-07-13 08:18:38 · 324 阅读 · 0 评论 -
习题2.5 两个有序链表序列的合并
其中List/* 存储结点数据 *//* 指向下一个结点的指针 *//* 定义单链表类型 */L1和L2是给定的带头结点的单链表,其结点存储的数据是递增有序的;函数Merge要将L1和L2合并为一个非递减的整数序列。应直接使用原序列中的结点,返回归并后的带头结点的链表头指针。原创 2024-07-13 06:58:32 · 182 阅读 · 0 评论 -
习题2.4 递增的整数序列链表的插入
其中List/* 存储结点数据 *//* 指向下一个结点的指针 *//* 定义单链表类型 */L是给定的带头结点的单链表,其结点存储的数据是递增有序的;函数Insert要将X插入L,并保持该序列的有序性,返回插入后的链表头指针。原创 2024-07-12 17:08:30 · 388 阅读 · 0 评论 -
习题2.6 递归求简单交错幂级数的部分和
其中题目保证传入的n是正整数,并且输入输出都在双精度范围内。函数fn应返回上述级数的部分和。建议尝试用递归实现。原创 2024-07-12 16:54:06 · 375 阅读 · 0 评论 -
习题2.3 数列求和-加强版
给定某数字A(1≤A≤9)以及非负整数N(0≤N≤100000),求数列之和S=A+AA+AAA+⋯+AA⋯A(N个A)。例如A=1, N=3时,S=1+11+111=123。原创 2024-07-12 16:44:19 · 187 阅读 · 0 评论 -
习题2.2 数组循环左移
本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a0a1⋯an−1)变换为(am⋯an−1a0a1⋯am−1)(最前面的m个数循环移至最后面的m个位置)。如果还需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?原创 2024-07-12 16:06:51 · 125 阅读 · 0 评论 -
习题2.1 简单计算器
模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。原创 2024-07-12 15:03:44 · 147 阅读 · 0 评论 -
实例1.1 最大子列和问题(习题1.7)
给定K个整数组成的序列{ N1, N2, ..., NK },“连续子列”被定义为{ Ni, Ni+1, ..., Nj },其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给定整数序列的最大子列和。本题旨在测试各种不同的算法在各种数据情况下的表现。原创 2024-07-10 17:37:34 · 129 阅读 · 0 评论 -
习题1.9 有序数组的插入
其中List结构定义如下:/* 保存线性表中最后一个元素的位置 */L是用户传入的一个线性表,其中元素可以通过>、==、<进行比较,并且题目保证传入的数据是递减有序的。函数Insert要将X插入Data[]中合适的位置,以保持结果依然有序(注意:元素从下标0开始存储)。但如果X已经在Data[]中了,就不要插入,返回失败的标记false;如果插入成功,则返回true。另外,因为Data[]中最多只能存MAXSIZE个元素,所以如果插入新元素之前已经满了,也不要插入,而是返回失败的标记。原创 2024-07-10 17:15:55 · 489 阅读 · 0 评论 -
习题1.8 二分查找
其中List结构定义如下:/* 保存线性表中最后一个元素的位置 */L是用户传入的一个线性表,其中元素可以通过>、==、<进行比较,并且题目保证传入的数据是递增有序的。函数要查找X在Data中的位置,即数组下标(注意:元素从下标1开始存储)。找到则返回下标,否则返回一个特殊的失败标记NotFound。原创 2024-07-10 15:35:14 · 243 阅读 · 0 评论 -
习题9-1 时间换算
本题要求编写程序,以hh:mm:ss的格式输出某给定时间再过n秒后的时间值(超过23:59:59就从0点开始计时)。原创 2024-07-09 20:18:38 · 196 阅读 · 0 评论