数据结构课程作业
我要吃木耳
我要吃木耳
展开
-
快速排序
【问题描述】对待排序序列使用快速排序算法进行排序,计算第一次划分之后分界元素在序列中的位置和排序结果(划分和分界元素的概念参照课本)(在序列中的位置跟书上一致,从1而不是从0开始)【输入形式】序列元素个数,序列【输出形式】第一次划分之后分界元素的位置,最终排序结果【样例输入】5 0 2 1 -1 -2【样例输出】3 -2 -1 0 1 2【样例说明】序列中的元素均为整数【评分标准】#include<iostream>using namespace std;template原创 2021-12-21 10:26:10 · 807 阅读 · 0 评论 -
设计一个算法,判断一个数据序列R[1..n]是否构成一个大根堆
【问题描述】设计一个算法,判断一个数据序列R[1..n]是否构成一个大根堆【输入形式】两行,第一行是数据个数,第二行是数据序列【输出形式】true 或者false,如果是大根堆,输出true,否则,输出false【样例输入】98 7 6 5 4 3 2 1 0【样例输出】true【样例说明】【评分标准】#include<iostream>using namespace std;template<class T>void hea原创 2021-12-20 01:53:00 · 2290 阅读 · 0 评论 -
哈希表的实现
【问题描述】对一组关键字值建立哈希表,哈希函数为除留余数法k mod p, 冲突解决方式为:线性探测再散列【输入形式】第一行的第一个数为哈希表容量,第二个数据为总关键字个数,第三个为除留余数法的除数第二行为关键字组【输出形式】为哈希表内容的顺序遍历(去除空单元)【样例输入】10 8 79 1 23 14 55 20 84 27【样例输出】14 1 9 23 84 55 20 27【样例说明】【评分标准】#include<iostream>.原创 2021-12-20 01:51:21 · 431 阅读 · 0 评论 -
设计一个算法,判断一棵二叉排序树bt是否为平衡的。
【问题描述】设计一个算法,判断一棵二叉排序树bt是否为平衡的。【输入形式】两行,第一行是数据个数,第二行是输入数据【输出形式】true或者false,如果输入数据构成的二叉树是平衡的,输出true, 否则,输出false【样例输入】95 2 3 4 1 8 6 7 9【样例输出】true【样例说明】【评分标准】#include<iostream>#include<queue>using namespace std;const int原创 2021-12-20 01:50:27 · 519 阅读 · 0 评论 -
设计一个算法求出该医院应建在哪一个村庄能使各村庄的总体交通代价最最少.
【问题描述】给定n个村庄之间的交通图。若村庄i与村庄j之间有路可通,则将顶点i与顶点j之间用边连接,边上的权值wij表示这条道路的长度。现打算在这n个村庄中选定一个村庄建一所医院,设计一个算法求出该医院应建在哪一个村庄能使各村庄的总体交通代价最最少【输入形式】第一行顶点个数n,边的个数。第二行到n+1行邻接矩阵【输出形式】村庄的编号,从0开始【样例输入】5 100 13 32767 4 3276713 0 15 32767 532767 32767 0 12 32...原创 2021-12-11 18:45:10 · 1503 阅读 · 0 评论 -
设计求源点v到其他顶点最短路径和最短路径长度的Dijkstra算法。
【问题描述】假设一个带权有向图采用邻接表存储,设计求源点v到其他顶点最短路径的Dijkstra算法。【输入形式】第一行顶点个数n,边数,第二行到第n+1行是邻接矩阵【输出形式】从顶点0依次输出到其它每个顶点的最短路径序列【样例输入】7 120 4 6 6 32767327673276732767 0 132767 732767327673276732767 032767 6 4327673276732767 2 032767 532767327...原创 2021-12-11 18:43:56 · 1948 阅读 · 0 评论 -
假设二叉树采用二叉链存储结构存储。设计一个算法,判断一棵二叉树是否为对称同构。
【问题描述】假设二叉树采用二叉链存储结构存储。设计一个算法,判断一棵二叉树是否为对称同构。所谓对称同构是指二叉树中任何结点的左、右子树结构是相同的。【输入形式】广义表表示的二叉树,结点元素类型为字符,,例如:a( b( c ( d, e ) ), f( g, h( i, j) ) )【输出形式】true 或者false【样例输入】A(B,C),字符串内没有空格【样例输出】true【样例说明】【评分标准】#include<iostream>u.原创 2021-11-21 11:32:03 · 4129 阅读 · 0 评论 -
假设二叉树采用二叉链存储结构存储。设计一个算法,输出从每个叶子结点到根结点的逆路径
【问题描述】假设二叉树采用二叉链存储结构存储。设计一个算法,输出从每个叶子结点到根结点的逆路径【输入形式】广义表表示的二叉树,结点元素类型为字符,例如:a( b( c ( d, e ) ), f( g, h( i, j) ) )【输出形式】从左至右,从上至下,依次打印每一个叶子节点到根节点的逆路径,元素间以空格隔开。每一叶子结点单独输出一行。【样例输入】a(b(c(d,e)),f(g,h(i,j))), 字符中间不含有空格【样例输出】d c b ae c b ag原创 2021-11-21 01:29:07 · 3719 阅读 · 1 评论 -
判断一个数列是否是栈的输出序列
【问题描述】给出一个堆栈的输入序列,试判断一个序列是否能够由这个堆栈输出。如果能,返回总的出栈次数,如果不能,返回0。序列的输入及输出都是从左往右。(输入输出序列皆为整数且没有重复的数字,如果一个数字在输入序列中没有出现,那么其在输出序列中也不会出现)【输入形式】第一行为输入序列的长度,第二行为输入序列的数字;第三行为输出序列的数字。输入数据以空格隔开。【输出形式】如果是一个出栈序列,则返回总的出栈次数, 否则返回0【样例输入】51 2 3 4 51 2 3 4 5【样例输出】5【.原创 2021-11-05 15:48:15 · 595 阅读 · 0 评论 -
十进制到八进制的转换
【问题描述】对于输入的任意一个非负十进制整数,打印输出与其等值的八进制数【输入形式】非负十进制整数【输出形式】相应十进制整数转换后的八进制正整数,若输入不符合要求,提示错误,重新输入【样例输入】5548【样例输出】12654【样例说明】先判断输入是否符合非负正整数要求【评分标准】#include<iostream>#include<vector>using namespace std;int main() { double n; cin >>原创 2021-11-05 15:47:14 · 1912 阅读 · 0 评论 -
顺序表L中的所有元素逆置
【问题描述】设计一个高效算法,将顺序表L中的所有元素逆置,要求算法的空间复杂度为O(1)。【输入形式】两行,第一行是输入数据数量,第二行是线性表数据,元素之间用空格间隔。【输出形式】输入线性表的逆序,元素之间用空格间隔【样例输入】51 2 3 4 5【样例输出】5 4 3 2 1【样例说明】输入数据是整数列,数据间以空格分开。【评分标准】必须使用顺序表存储元素,算法空间复杂度O(1),顺序表存储实现逆序。#include<iostream>原创 2021-10-02 12:49:18 · 4354 阅读 · 2 评论 -
设计一个算法将所有小于零的结点移到所有大于等于零的结点的前面
【问题描述】某非空单链表L中的所有元素为整数,设计一个算法将所有小于零的结点移到所有大于等于零的结点的前面。【输入形式】两行,第一行是整数个数,第二行是整数列表【输出形式】整数列表【样例输入】6-1 2 3 -3 -5 6【样例输出】-5 -3 -1 2 3 6【样例说明】将小于0的整数插入到头部位置【评分标准】必须使用单链表多写了一个排序的功能,就这样吧。#include<iostream>using namespace st原创 2021-10-02 03:52:47 · 5181 阅读 · 2 评论 -
找出由str1和str2所指向两个链表共同后缀的起始位置
【问题描述】假定采用带头结点的单链表保存单词,当两个单词有相同的后缀时可共享相同的后缀存储空间,例如“loading”和”being”,如下图所示。设str1和str2分别指向两个单词所在单链表的头结点,链表结点结构为(data,next).请设计一个时间上尽可能高效的算法,找出由str1和str2所指向两个链表共同后缀(如图中字符’ing’)【输入形式】输入共三行,第一行为两个单词长度,第二行为第一个单词,第三行为第二个单词【输出形式】两个单词共同后缀【样例输入】7 5原创 2021-10-02 02:42:36 · 566 阅读 · 0 评论 -
折半查找法的使用
【问题描述】给定一个按值有序(升序)的N元整数数组A,采用折半查找法查找关键值k的位置,并给出查找的过程【输入形式】第一行:N第二行:A[0], A[1], ... , A[N-1]第三行:k【输出形式】第一行:k的位置(索引),若不存在则输出‘no’第二行:查找的过程,每一次折半的中间(mid)位置的值,以逗号分隔。例如,1 2 3 4 5的中间位置为3,1 2 3 4的中间位置为2。【样例输入】样例1112,5,8,11,15原创 2021-09-30 17:30:54 · 787 阅读 · 0 评论