
DS
~澄~
一个菜鸡
展开
-
DFS非递归
参考题目https://blog.youkuaiyun.com/luoyeliufeng/article/details/103637935代码#include <iostream>#include <stack>using namespace std;class Graph{ int **matrix; int vexNum; bool *visited; void DFS(int v);public: Graph(){原创 2021-03-08 21:11:59 · 348 阅读 · 0 评论 -
二叉树之非递归遍历
参考题目https://blog.youkuaiyun.com/luoyeliufeng/article/details/103592211首先要明白二叉树的三种遍历方式先序遍历:先访问根节点,再访问左子树,最后访问右子树中序遍历:先访问左子树,再访问根节点,最后访问右子树后序遍历:先访问左子树,再访问右子树,最后访问根节点一个重要的思想:二叉树中的每一个节点都可以看作是一棵树的根节点对于非递归遍历,需要借助循环和栈来实现参考代码:#include <iostream>#includ原创 2021-03-08 16:53:46 · 312 阅读 · 0 评论 -
DS基数排序
DS基数排序题目描述给定一组数据,对其进行基数升序排序。输入测试次数t每组测试数据一行:数字个数n,后跟n个数字(整数)输出对每组测试数据,输出每趟分配、收集的结果。若分配中该位没有数字,输出NULL。具体输出格式见样例。每组测试数据间以空行分隔。样例输入210 278 109 63 930 589 184 505 269 8 836 57 0 93 19 18 99样...原创 2020-01-01 23:16:27 · 1180 阅读 · 0 评论 -
DS内排—2-路归并排序
DS内排—2-路归并排序题目描述输入一组字符串,用2-路归并排序按字典顺序进行降序排序。输入测试次数t每组测试数据:数据个数n,后跟n个字符串,字符串不含空格。输出对每组测试数据,输出2-路归并排序的每一趟排序结果。每组测试数据的输出之间有1空行。样例输入26 shenzhen beijing guangzhou futian nanshan baoan10 apple p...原创 2020-01-01 23:14:57 · 917 阅读 · 0 评论 -
DS内排—堆排序
DS内排—堆排序题目描述给定一组数据,使用堆排序完成数据的降序排序。(建小顶堆)。输入数据个数n,n个整数数据输出初始创建的小顶堆序列每趟交换、筛选后的数据序列,输出格式见样例样例输入8 34 23 677 2 1 453 3 7样例输出8 1 2 3 7 23 453 677 348 2 7 3 34 23 453 677 18 3 7 453 34 23 677...原创 2020-01-01 23:13:36 · 640 阅读 · 0 评论 -
DS二叉树--后序遍历非递归算法
DS二叉树–后序遍历非递归算法题目描述求一颗树的后序遍历的非递归算法要求:必须是非递归算法,使用堆栈对象来实现建树方法采用“先序遍历+空树用0表示”的方法算法流程:输入第一行输入一个整数t,表示有t个测试数据第二行起输入二叉树先序遍历的结果,空树用字符‘0’表示,输入t行输出逐行输出每个二叉树的后序遍历结果样例输入3AB0C00D00ABC00D00EF000AB...原创 2020-01-01 23:12:00 · 1458 阅读 · 0 评论 -
DS排序--快速排序
DS排序–快速排序题目描述给出一个数据序列,使用快速排序算法进行从小到大的排序–程序要求–若使用C++只能include一个头文件iostream;若使用C语言只能include一个头文件stdio程序中若include多过一个头文件,不看代码,作0分处理不允许使用第三方对象或函数实现本题的要求输入第一行输入t,表示有t个测试示例第二行输入n,表示第一个示例有n个数据第三行输入...原创 2020-01-01 23:10:31 · 770 阅读 · 0 评论 -
冒泡排序
冒泡排序题目描述给定一个包含从0到n-1各一次的数组,若使用冒泡排序将其排为升序,问其中需要进行多少次交换输入测试数据有多组,每组由两行组成:第一行包含正整数n(n <= 5000); 下一行包含从0到n-1的n个整数的序列。输出对于每组测试数据,输出交换次数样例输入101 3 6 9 0 8 5 7 4 2样例输出22#include <iostr...原创 2020-01-01 23:08:55 · 1229 阅读 · 0 评论 -
DS排序--希尔排序
DS排序–希尔排序题目描述给出一个数据序列,使用希尔排序算法进行降序排序。间隔gap使用序列长度循环除2直到1输入第一行输入t,表示有t个测试示例第二行输入n,表示第一个示例有n个数据(n>1)第三行输入n个数据,都是正整数,数据之间用空格隔开以此类推输出对每组测试数据,输出每趟排序结果。不同组测试数据间用空行分隔。样例输入26111 22 6 444 333 ...原创 2020-01-01 23:07:34 · 751 阅读 · 0 评论 -
DS内排—直插排序
DS内排—直插排序题目描述给定一组数据,使用直插排序完成数据的升序排序。–程序要求–若使用C++只能include一个头文件iostream;若使用C语言只能include一个头文件stdio程序中若include多过一个头文件,不看代码,作0分处理不允许使用第三方对象或函数实现本题的要求输入数据个数n,n个数据输出直插排序的每一趟排序结果样例输入7 34 23 677 ...原创 2020-01-01 23:05:29 · 825 阅读 · 0 评论 -
DS哈希查找—线性探测再散列
DS哈希查找—线性探测再散列题目描述定义哈希函数为H(key) = key%11,输入表长(大于、等于11)。输入关键字集合,用线性探测再散列构建哈希表,并查找给定关键字。–程序要求–若使用C++只能include一个头文件iostream;若使用C语言只能include一个头文件stdio程序中若include多过一个头文件,不看代码,作0分处理不允许使用第三方对象或函数实现本题的要...原创 2020-01-01 23:02:52 · 1793 阅读 · 0 评论 -
DS二叉排序树之删除
DS二叉排序树之删除题目描述给出一个数据序列,建立二叉排序树,并实现删除功能对二叉排序树进行中序遍历,可以得到有序的数据序列输入第一行输入t,表示有t个数据序列第二行输入n,表示首个序列包含n个数据第三行输入n个数据,都是自然数且互不相同,数据之间用空格隔开第四行输入m,表示要删除m个数据从第五行起,输入m行,每行一个要删除的数据,都是自然数以此类推输入下一个示例输出第一行...原创 2019-12-22 15:19:36 · 1332 阅读 · 0 评论 -
DS二叉排序树之查找
DS二叉排序树之查找题目描述给出一个数据序列,建立二叉排序树,并实现查找功能对二叉排序树进行中序遍历,可以得到有序的数据序列输入第一行输入t,表示有t个数据序列第二行输入n,表示首个序列包含n个数据第三行输入n个数据,都是自然数且互不相同,数据之间用空格隔开第四行输入m,表示要查找m个数据从第五行起,输入m行,每行一个要查找的数据,都是自然数以此类推输入下一个示例输出第一行...原创 2019-12-22 14:00:11 · 1535 阅读 · 0 评论 -
DS二叉排序树之创建和插入
DS二叉排序树之创建和插入题目描述给出一个数据序列,建立二叉排序树,并实现插入功能对二叉排序树进行中序遍历,可以得到有序的数据序列输入第一行输入t,表示有t个数据序列第二行输入n,表示首个序列包含n个数据第三行输入n个数据,都是自然数且互不相同,数据之间用空格隔开第四行输入m,表示要插入m个数据从第五行起,输入m行,每行一个要插入的数据,都是自然数且和前面的数据不等以此类推输入...原创 2019-12-22 13:42:06 · 968 阅读 · 0 评论 -
DS静态查找之折半查找
DS静态查找之折半查找题目描述给出一个队列和要查找的数值,找出数值在队列中的位置,队列位置从1开始要求使用折半查找算法输入第一行输入n,表示队列有n个数据第二行输入n个数据,都是正整数,用空格隔开第三行输入t,表示有t个要查找的数值第四行起,输入t个数值,输入t行输出每行输出一个要查找的数值在队列的位置,如果查找不成功,输出字符串error样例输入811 22 33 4...原创 2019-12-22 13:05:21 · 642 阅读 · 0 评论 -
DS静态查找之顺序查找
DS静态查找之顺序查找题目描述给出一个队列和要查找的数值,找出数值在队列中的位置,队列位置从1开始要求使用带哨兵的顺序查找算法输入第一行输入n,表示队列有n个数据第二行输入n个数据,都是正整数,用空格隔开第三行输入t,表示有t个要查找的数值第四行起,输入t个数值,输入t行输出每行输出一个要查找的数值在队列的位置,如果查找不成功,输出字符串error样例输入833 66 ...原创 2019-12-22 11:54:14 · 978 阅读 · 0 评论 -
图综合练习--拓扑排序
图综合练习–拓扑排序题目描述已知有向图,顶点从0开始编号,求它的求拓扑有序序列。拓扑排序算法:给出有向图邻接矩阵1.逐列扫描矩阵,找出入度为0且编号最小的顶点v2.输出v,并标识v已访问3.把矩阵第v行全清0重复上述步骤,直到所有顶点输出为止–程序要求–若使用C++只能include一个头文件iostream;若使用C语言只能include一个头文件stdio程序中若inclu...原创 2019-12-22 09:56:45 · 1448 阅读 · 0 评论 -
DS图应用--最短路径(含代码框架)
DS图应用–最短路径(含代码框架)题目描述给出一个图的邻接矩阵,再给出指定顶点v0,求顶点v0到其他顶点的最短路径代码框架如下:输入第一行输入t,表示有t个测试实例第二行输入n,表示第1个图有n个结点第三行起,每行输入邻接矩阵的一行,以此类推输入n行第i个结点与其他结点如果相连则为1,无连接则为0,数据之间用空格隔开第四行输入v0,表示求v0到其他顶点的最短路径距离以此类...原创 2019-12-21 21:35:57 · 1397 阅读 · 0 评论 -
DS图—最小生成树
DS图—最小生成树题目描述根据输入创建无向网。分别用Prim算法和Kruskal算法构建最小生成树。(假设:输入数据的最小生成树唯一。)输入顶点数nn个顶点边数mm条边信息,格式为:顶点1 顶点2 权值Prim算法的起点v输出输出最小生成树的权值之和对两种算法,按树的生长顺序,输出边信息(Kruskal中边顶点按数组序号升序输出)样例输入6v1 v2 v3 v4 v5...原创 2019-12-21 15:30:07 · 1327 阅读 · 0 评论 -
DS图—图的连通分量
DS图—图的连通分量题目描述输入无向图顶点信息和边信息,创建图的邻接矩阵存储结构,计算图的连通分量个数。输入测试次数t每组测试数据格式如下:第一行:顶点数 顶点信息第二行:边数第三行开始,每行一条边信息输出每组测试数据输出,顶点信息和邻接矩阵信息输出图的连通分量个数,具体输出格式见样例。每组输出直接用空行分隔。样例输入34 A B C D2A BA C6 V...原创 2019-12-21 10:56:10 · 1242 阅读 · 0 评论 -
DS图遍历--广度优先搜索
DS图遍历–广度优先搜索题目描述给出一个图的邻接矩阵,对图进行深度优先搜索,从顶点0开始注意:图n个顶点编号从0到n-1代码框架如下:输入第一行输入t,表示有t个测试实例第二行输入n,表示第1个图有n个结点第三行起,每行输入邻接矩阵的一行,以此类推输入n行第i个结点与其他结点如果相连则为1,无连接则为0,数据之间用空格隔开以此类推输入下一个示例输出每行输出一个图的广度优先...原创 2019-12-20 21:01:02 · 1114 阅读 · 0 评论 -
DS图遍历--深度优先搜索
DS图遍历–深度优先搜索题目描述给出一个图的邻接矩阵,对图进行深度优先搜索,从顶点0开始注意:图n个顶点编号从0到n-1代码框架如下:输入第一行输入t,表示有t个测试实例第二行输入n,表示第1个图有n个结点第三行起,每行输入邻接矩阵的一行,以此类推输入n行第i个结点与其他结点如果相连则为1,无连接则为0,数据之间用空格隔开以此类推输入下一个示例输出每行输出一个图的深度优...原创 2019-12-20 20:10:17 · 634 阅读 · 0 评论 -
图综合练习--构建邻接表
图综合练习–构建邻接表题目描述已知一有向图,构建该图对应的邻接表。邻接表包含数组和单链表两种数据结构,其中每个数组元素也是单链表的头结点,数组元素包含两个属性,属性一是顶点编号info,属性二是指针域next指向与它相连的顶点信息。单链表的每个结点也包含两个属性,属性一是顶点在数组的位置下标,属性二是指针域next指向下一个结点。输入第1行输入整数t,表示有t个图第2行输入n和k,表...原创 2019-12-20 19:37:58 · 2652 阅读 · 1 评论 -
DS图—图的邻接矩阵存储及度计算
DS图—图的邻接矩阵存储及度计算题目描述假设图用邻接矩阵存储。输入图的顶点信息和边信息,完成邻接矩阵的设置,并计算各顶点的入度、出度和度,并输出图中的孤立点(度为0的顶点)–程序要求–若使用C++只能include一个头文件iostream;若使用C语言只能include一个头文件stdio程序中若include多过一个头文件,不看代码,作0分处理不允许使用第三方对象或函数实现本题的要...原创 2019-12-20 19:37:31 · 1255 阅读 · 0 评论 -
DS树--二叉树之最大路径
DS树–二叉树之最大路径题目描述给定一颗二叉树的逻辑结构(先序遍历的结果,空树用字符‘0’表示,例如AB0C00D00),建立该二叉树的二叉链式存储结构二叉树的每个结点都有一个权值,从根结点到每个叶子结点将形成一条路径,每条路径的权值等于路径上所有结点的权值和。编程求出二叉树的最大路径权值。如下图所示,共有4个叶子即有4条路径,路径1权值=5 + 4 + 11 + 7 = 27 ...原创 2019-12-20 19:36:15 · 1747 阅读 · 0 评论 -
DS二叉树——Huffman编码与解码(不含代码框架)
DS二叉树——Huffman编码与解码(不含代码框架)题目描述1、问题描述给定n个字符及其对应的权值,构造Huffman树,并进行huffman编码和译(解)码。构造Huffman树时,要求左子树根的权值小于、等于右子树根的权值。进行Huffman编码时,假定Huffman树的左分支上编码为‘0’,右分支上编码为‘1’。2、算法构造Huffman树算法:⑴ 根据给定的n个权值(w1...原创 2019-12-20 18:29:14 · 846 阅读 · 0 评论 -
DS树--带权路径和
DS树–带权路径和题目描述计算一棵二叉树的带权路径总和,即求赫夫曼树的带权路径和。已知一棵二叉树的叶子权值,该二叉树的带权案路径和APL等于叶子权值乘于根节点到叶子的分支数,然后求总和。如下图中,叶子都用大写字母表示,权值对应为:A-7,B-6,C-2,D-3树的带权路径和 = 71 + 62 + 23 + 33 = 34本题二叉树的创建参考前面的方法输入第一行输入一个整数t,表示...原创 2019-12-18 20:43:45 · 2711 阅读 · 0 评论 -
DS二叉树--叶子数量
DS二叉树–叶子数量题目描述计算一颗二叉树包含的叶子结点数量。提示:叶子是指它的左右孩子为空。建树方法采用“先序遍历+空树用0表示”的方法,即给定一颗二叉树的先序遍历的结果为AB0C00D00,其中空节点用字符‘0’表示。则该树的逻辑结构如下图。输入第一行输入一个整数t,表示有t个测试数据第二行起输入二叉树先序遍历的结果,空树用字符‘0’表示,输入t行输出逐行输出每个二叉树的包...原创 2019-12-18 13:57:00 · 1721 阅读 · 0 评论 -
DS二叉树——二叉树之父子结点
DS二叉树——二叉树之父子结点题目描述给定一颗二叉树的逻辑结构如下图,(先序遍历的结果,空树用字符‘0’表示,例如AB0C00D00),建立该二叉树的二叉链式存储结构。编写程序输出该树的所有叶子结点和它们的父亲结点输入第一行输入一个整数t,表示有t个二叉树第二行起,按照题目表示的输入方法,输入每个二叉树的先序遍历,连续输入t行输出第一行按先序遍历,输出第1个示例的叶子节点第二行...原创 2019-12-18 13:24:22 · 1755 阅读 · 1 评论 -
DS二叉树—二叉树构建与遍历(不含框架)
DS二叉树—二叉树构建与遍历(不含框架)题目描述给定一颗二叉树的逻辑结构如下图,(先序遍历的结果,空树用字符‘#’表示,例如AB#C##D##),建立该二叉树的二叉链式存储结构,并输出该二叉树的先序遍历、中序遍历和后序遍历结果。输入第一行输入一个整数t,表示有t个二叉树第二行起输入每个二叉树的先序遍历结果,空树用字符‘#’表示,连续输入t行。输出输出每个二叉树的先序遍历、中序遍历和后...原创 2019-12-18 09:54:06 · 1690 阅读 · 0 评论 -
DS二叉树——二叉树之数组存储
DS二叉树——二叉树之数组存储题目描述二叉树可以采用数组的方法进行存储,把数组中的数据依次自上而下,自左至右存储到二叉树结点中,一般二叉树与完全二叉树对比,比完全二叉树缺少的结点就在数组中用0来表示。,如下图所示从上图可以看出,右边的是一颗普通的二叉树,当它与左边的完全二叉树对比,发现它比完全二叉树少了第5号结点,所以在数组中用0表示,同样它还少了完全二叉树中的第10、11号结点,所以在数...原创 2019-12-18 09:26:48 · 3761 阅读 · 0 评论 -
串应用- 计算一个串的最长的真前后缀
串应用- 计算一个串的最长的真前后缀题目描述给定一个串,如ABCDAB,则 ABCDAB的真前缀有:{ A, AB,ABC, ABCD, ABCDA } ABCDAB的真后缀有:{ B, AB,DAB, CDAB, BCDAB } 因此,该串的真前缀和真后缀中最长的相等串为AB,我们称之为该串的“最长的真前后缀”。 试实现一个函数string matched_Prefix_Postfix(st...原创 2019-12-17 23:17:29 · 1601 阅读 · 0 评论 -
DS串应用--串替换
DS串应用–串替换题目描述给出主串、模式串、替换串,用KMP算法找出模式串在主串的位置,然后用替换串的字符替换掉模式串本题只考虑一处替换的情况,如果你想做的完美一些,能够实现多处替换那可能需要考虑模式串和替换串长度不一致的情况输入第一个输入t,表示有t个实例第二行输入第1个实例的主串,第三行输入第1个实例的模式串,第四行输入第1个实例的替换串以此类推输出第一行输出第1个实例的主...原创 2019-12-17 22:04:24 · 1616 阅读 · 0 评论 -
DS串应用--KMP算法
DS串应用–KMP算法题目描述学习KMP算法,给出主串和模式串,求模式串在主串的位置算法框架如下,仅供参考输入第一个输入t,表示有t个实例第二行输入第1个实例的主串,第三行输入第1个实例的模式串以此类推输出第一行输出第1个实例的模式串的next值第二行输出第1个实例的匹配位置,位置从1开始计算,如果匹配成功输出位置,匹配失败输出0以此类推样例输入3qwertyuio...原创 2019-12-17 21:39:22 · 2226 阅读 · 0 评论 -
DS队列----银行简单模拟
DS队列----银行简单模拟题目描述设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列。假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出。输入输入为一行正整数,其中第1个数字N(≤1000)为顾客总数,...原创 2019-12-08 16:06:21 · 934 阅读 · 0 评论 -
DS队列+堆栈--数制转换
DS队列+堆栈–数制转换题目描述对于任意十进制数转换为k进制,包括整数部分和小数部分转换。整数部分采用除k求余法,小数部分采用乘k取整法例如x=19.125,求2进制转换整数部分19, 小数部分0.12519 / 2 = 9 … 1 0.125 * 2 = 0.25 … 09 / 2 = 4 … 1 0.25 * 2 = 0.5 … 04 / 2 = 2 …...原创 2019-12-08 15:07:15 · 1061 阅读 · 0 评论 -
DS堆栈--迷宫求解
DS堆栈–迷宫求解题目描述给出一个N*N的迷宫矩阵示意图,从起点[0,0]出发,寻找路径到达终点[N-1, N-1]要求使用堆栈对象来实现,具体算法参考课本3.2.4节51页输入第一行输入t,表示有t个迷宫第二行输入n,表示第一个迷宫有n行n列第三行起,输入迷宫每一行的每个方格的状态,0表示可通过,1表示不可通过输入n行以此类推输入下一个迷宫输出逐个输出迷宫的路径如果迷宫不...原创 2019-12-08 14:13:42 · 2789 阅读 · 0 评论 -
DS堆栈--括号匹配
DS堆栈–括号匹配题目描述处理表达式过程中需要对括号匹配进行检验,括号匹配包括三种:“(”和“)”,“[”和“]”,“{”和“}”。例如表达式中包含括号如下:( ) [ ( ) ( [ ] ) ] { }1 2 3 4 5 6 7 8 9 10 11 12从上例可以看出第1和第2个括号匹配,第3和第10个括号匹配,4和5匹配,6和9匹配,7和8匹配,11和12匹配。从中可以看到括号嵌套...原创 2019-12-02 19:05:49 · 1276 阅读 · 0 评论 -
DS堆栈--行编辑
DS堆栈–行编辑题目描述使用C++的STL堆栈对象,编写程序实现行编辑功能。行编辑功能是:当输入#字符,则执行退格操作;如果无字符可退就不操作,不会报错本程序默认不会显示#字符,所以连续输入多个#表示连续执行多次退格操作每输入一行字符打回车则表示字符串结束注意:必须使用堆栈实现,而且结果必须是正序输出输入第一行输入一个整数t,表示有t行字符串要输入第二行起输入一行字符串,共输入t行...原创 2019-12-02 18:35:23 · 1228 阅读 · 0 评论 -
DS堆栈--逆序输出(STL栈使用)
DS堆栈–逆序输出(STL栈使用)题目描述C++中已经自带堆栈对象stack,无需编写堆栈操作的具体实现代码。本题目主要帮助大家熟悉stack对象的使用,然后实现字符串的逆序输出输入一个字符串,按字符按输入顺序压入堆栈,然后根据堆栈后进先出的特点,做逆序输出stack类使用的参考代码n包含头文件 : #include n创建一个堆栈对象s(注意stack是模板类):stack ...原创 2019-12-02 18:34:49 · 1551 阅读 · 0 评论