SWUST OJ 数据结构练习
就是题 个人比较懒 代码就不给解释了 有需要自己看
Eric.Lee_Coder
这个作者很懒,什么都没留下…
展开
-
SWUST OJ 1077: 平衡二叉树的判定 C++实现
如果是平衡二叉树,输出yes!编写程序判断给定的二叉树是否是平衡二叉树。原创 2023-06-30 10:53:53 · 358 阅读 · 0 评论 -
SWUST OJ 1098: 堆的判断 C++实现
编写程序判断以下给出的整数序列是否为最小堆。如果是小根堆,输出Yes,否者输出No。第一行是元素的个数n;第二行是n个整数序列。原创 2023-06-30 10:55:08 · 475 阅读 · 0 评论 -
SWUST OJ 1099: 希尔排序算法实现 C++实现
编程实现希尔排序算法,按照非递减排序,测试数据为整数。第一行是待排序数据元素的个数n;第二行是待排序的数据元素。一趟希尔排序后的结果。原创 2023-06-30 10:56:07 · 436 阅读 · 0 评论 -
SWUST OJ 1075: 求最小生成树(Prim算法)C++实现
第一行为图的顶点个数n第二行为图的边的条数e接着e行为依附于一条边的两个顶点和边上的权值。原创 2023-06-30 10:48:05 · 299 阅读 · 0 评论 -
SWUST OJ 1105: 交换二叉树的孩子结点 C++实现
题目描述编程程序实现将二叉树中所有结点的左右孩子互换。原创 2023-06-30 10:55:14 · 454 阅读 · 0 评论 -
SWUST OJ 1076: 判断给定有向图是否存在回路 C++实现
第一行为图中顶点的个数n;第二行为途中弧度条数e;接着e行为e条弧依附的两个顶点。判断给定有向图是否存在回路。该图是否存在回路,是输出。原创 2023-06-30 10:50:09 · 525 阅读 · 0 评论 -
SWUST OJ 1070: 邻接矩阵存储简单路径 C++实现
简单路径是指路径上的顶点不重复。第一行为一个整数n,表示顶点的个数(顶点编号为0到n-1),第二行表示顶点u和v的编号,接下来是为一个n*n大小的矩阵,表示图的邻接关系。数字为0表示不邻接,1表示不邻接。假设无向图G采用邻接矩阵存储,设计一个算法,输出图G中从顶点u到v的所有简单路径。输出图G中从顶点u到v的所有简单路径。原创 2023-06-30 10:49:12 · 342 阅读 · 0 评论 -
SWUST OJ981: 统计利用二叉树存储的森林中树的棵数C++实现
题目描述普通树及其构成的森林均可转换成相应的二叉树,反之亦然。故而可以根据相应的转换方法去统计某一二叉树对应的森林中树的棵数。相应的二叉树可利用先序递归遍历算法创建。先序递归遍历建立二叉树的方法为:按照先序递归遍历的思想将对二叉树结点的抽象访问具体化为根据接收的数据决定是否产生该结点从而实现创建该二叉树的二叉链表存储结构。约定二叉树结点数据为单个大写英文字符。当接收的数据是字符"#"时表示该结点不需要创建,否则创建该结点。最后再统计该二叉树对应的森林中树的棵数。需要注意输入数据序列中的"#"字符和非原创 2023-06-27 13:28:59 · 311 阅读 · 0 评论 -
SWUST OJ 1015: 堆排序算法 C++实现
第一行是待排序数据元素的个数;第二行是待排序的数据元素。编写程序堆排序算法。按照从小到大的顺序进行排序,测试数据为整数。原创 2023-06-29 21:52:48 · 275 阅读 · 0 评论 -
SWUST OJ982: 输出利用二叉树存储的普通树的度C++实现
普通树可转换成相应的二叉树(该二叉树的根结点一定缺少右儿子),反之亦然。先序递归遍历建立二叉树的方法为:按照先序递归遍历的思想将对二叉树结点的抽象访问具体化为根据接收的数据决定是否产生该结点从而实现创建该二叉树的二叉链表存储结构。当接收的数据是字符"#"时表示该结点不需要创建,否则创建该结点。需要注意输入数据序列中的"#"字符的序列及个数关系,这会最终决定创建的二叉树的形态(序列里面允许无效字符但需要正确处理)。输入为接受键盘输入的由大写英文字符和"#"字符构成的一个字符串(用于创建对应的二叉树)。原创 2023-06-27 13:35:57 · 238 阅读 · 0 评论 -
SWUST OJ 1067: 有向图的邻接表存储强连通判断 C++实现
假设有向图G采用邻接表存储,设计一个算法,判断图G是否是强连通图。(图中顶点信息为整型数据。接下来e行,每行是一条边依附的两个顶点信息。强连通图输出yes,否则输出no.第一行为图中顶点的个数n;第二行为图的边的条数e;原创 2023-06-30 10:43:23 · 352 阅读 · 0 评论 -
SWUST OJ 1057: 有向图的出度计算 C++实现
第一行为图中顶点的个数n 第二行为图的边的条数e 第三行为依附于一条边的两个顶点的数据信息。假设有向图G采用邻接表存储,设计算法求出图G中每个顶点的出度。图G中每个顶点的出度。第一行表示顶点0的出度,其他行定义相同。原创 2023-06-29 21:55:05 · 329 阅读 · 1 评论 -
SWUST OJ1011: 二叉排序树的实现和查找C++实现
按照给定的关键字集合,建立二叉排序树。在建立的二叉排序树上查找指定的关键字,查找成功,输出找到该关键字比较的次数;查找不成功,输出-1.查找成功输出比较的次数,否则输出-1。原创 2023-06-27 13:43:03 · 212 阅读 · 0 评论 -
SWUST OJ 1065: 无向图的连通分量计算 C++实现
第一行为一个整数n,表示顶点的个数(顶点编号为0到n-1),接下来是为一个n*n大小的整数矩阵,表示图的邻接关系。数字为0表示不邻接,1表示不邻接。假设无向图G采用邻接矩阵存储,编写一个算法求连通分量的个数。原创 2023-06-29 21:58:20 · 757 阅读 · 0 评论 -
SWUST OJ984: 利用二叉树中序及先序遍历确定该二叉树的后序序列C++实现
已知二叉树的中序和先序遍历可以唯一确定后序遍历、已知中序和后序遍历可以唯一确定先序遍历,但已知先序和后序,却不一定能唯一确定中序遍历。现要求根据输入的中序遍历结果及先序遍历结果,要求输出其后序遍历结果。输入数据占2行,其中第一行表示中序遍历结果,第二行为先序遍历结果。对测试数据,输出后序遍历结果。原创 2023-06-27 13:37:14 · 264 阅读 · 0 评论 -
SWUST OJ987: 输出用先序遍历创建的二叉树是否为完全二叉树的判定结果C++实现
利用先序递归遍历算法创建二叉树并判断该二叉树是否为完全二叉树。先序递归遍历建立二叉树的方法为:按照先序递归遍历的思想将对二叉树结点的抽象访问具体化为根据接收的数据决定是否产生该结点从而实现创建该二叉树的二叉链表存储结构。当接收的数据是字符"#"时表示该结点不需要创建,否则创建该结点。需要注意输入数据序列中的"#"字符和非"#"字符的序列及个数关系,这会最终决定创建的二叉树的形态。输入为接受键盘输入的由大写英文字符和"#"字符构成的一个字符串(用于创建对应的二叉树)。对应的二叉树是否为完全二叉树的判断结果。原创 2023-06-27 13:38:19 · 229 阅读 · 0 评论 -
SWUST OJ1013: 哈希表(开放定址法处理冲突)C++实现
采用除留余数法(H(key)=key %n)建立长度为n的哈希表,处理冲突用开放定址法的线性探测。第一行为哈希表的长度n;第二行为关键字的个数;第三行为关键字集合;第三行为要查找的数据。如果查找成功,输出关键字所哈希表中的地址和比较次数;如果查找不成功,输出-1。原创 2023-06-27 13:46:03 · 263 阅读 · 0 评论 -
SWUST OJ980: 输出利用先序遍历创建的二叉树的层次遍历序列 C++实现
利用先序递归遍历算法创建二叉树并输出该二叉树的层次遍历序列。先序递归遍历建立二叉树的方法为:按照先序递归遍历的思想将对二叉树结点的抽象访问具体化为根据接收的数据决定是否产生该结点从而实现创建该二叉树的二叉链表存储结构。当接收的数据是字符"#"时表示该结点不需要创建,否则创建该结点。最后再输出创建完成的二叉树的层次遍历序列。需要注意输入数据序列中的"#"字符和非"#"字符的序列及个数关系,这会最终决定创建的二叉树的形态。输入为接受键盘输入的由大写英文字符和"#"字符构成的一个字符串(用于创建对应的二叉树)。原创 2023-06-27 13:30:00 · 459 阅读 · 0 评论 -
SWUST OJ 1055: 邻接矩阵到邻接表 C++实现
第一行为一个整数n,表示顶点的个数(顶点编号为0到n-1),接下来是为一个n*n大小的整数矩阵,表示图的邻接关系。数字为0表示不邻接,1表示邻接。第一行表示顶点0可直接到达的顶点编号。假设无向图G采用邻接矩阵存储,编写一个算法输出邻接表。原创 2023-06-29 21:54:47 · 151 阅读 · 0 评论 -
SWUST OJ1012: 哈希表(链地址法处理冲突)C++实现
采用除留余数法(H(key)=key %n)建立长度为n的哈希表,处理冲突用链地址法。建立链表的时候采用尾插法。如果查找成功,输出该关键字所在哈希表中的地址和比较次数;如果查找不成功,输出-1。第一行为哈西表的长度m;第二行为关键字的个数n;第四行为要查找的数据。第三行为关键字集合;原创 2023-06-27 13:44:20 · 319 阅读 · 0 评论 -
SWUST OJ 1060: 无向图的最大度计算 C++实现
第一行为一个整数n,表示顶点的个数(顶点编号为0到n-1)。接下来是为一个n*n大小的整数矩阵,表示图的邻接关系。数字为0表示不邻接,1表示邻接。假设无向图G采用邻接矩阵存储,求出图G最大度值并输出顶点的编号(有多个结果的都要输出)。图G中度的最大值以及顶点编号。第一行表示最大度值,第二行表示所有顶点的编号。原创 2023-06-29 21:58:23 · 281 阅读 · 0 评论 -
SWUST OJ 1062: 有向图的边存在判断 C++实现
第一行第一个整数n表示顶点的个数(顶点编号为0到n-1),第二行表示顶点i和j,接下来是为一个n*n大小的整数矩阵,表示图的邻接关系。数字为0表示不邻接,1表示不邻接。假设有向图G采用邻接矩阵存储,判断图G中是否存在边。yes(存在),no(不存在)。原创 2023-06-29 21:57:15 · 157 阅读 · 0 评论 -
SWUST OJ 1056: 邻接表到邻接矩阵 C++实现
第一行为一个整数n,表示顶点的个数(顶点编号为0到n-1)。第二行表示顶点0可直接到达的顶点编号,其他行定义相同。输出图G的邻接矩阵。整数矩阵大小为n*n,表示图的邻接关系。数字为0表示不邻接,1表示邻接。假设无向图G采用邻接表存储,编写一个算法输出邻接矩阵。原创 2023-06-29 21:53:46 · 214 阅读 · 0 评论 -
SWUST OJ 1068: 图的按录入顺序深度优先搜索 C++实现
图的深度优先搜索类似于树的先根遍历,即从某个结点开始,先访问该结点,然后深度访问该结点的第一棵子树,依次为第二顶子树。在该题中,假定所有的结点以“A”至“Z”中的若干字符表示,且要求结点的访问顺序根据录入的顺序进行访问。如果结点录入的顺序为HUEAK,从H开始进行深度优先搜索,则可能的搜索结果为:H->A->K->U>E.第一行为一个整数n,表示顶点的个数,第二行为n个大写字母构成的字符串,表示顶点,接下来是为一个n*n大小的整数矩阵,表示图的邻接关系。用一行输出深度优先搜索结果,起始点为给定的顶点。原创 2023-06-30 10:42:24 · 301 阅读 · 0 评论 -
SWUST OJ1010: 折半查找的实现C++实现
题目描述编写程序实现折半查找算法。原创 2023-06-27 13:39:41 · 217 阅读 · 0 评论 -
SWUST OJ986: 哈夫曼译码C++实现
通常要求根据给定的编码本对密文进行解码。现已给定相应字符的哈夫曼编码,要求根据编码对密文进行解码。(建立哈夫曼树以及编码、主函数等都已经给出,你只需要填写译码函数void ccode(haffnode hafftree[],int n)即可。对每一行需要解码的串,进行解码,并输出解码后的结果。根据哈夫曼树编码表,针对字符串做好的编码结果。原创 2023-06-27 13:39:09 · 222 阅读 · 0 评论 -
SWUST OJ 1053: 输出利用先序遍历创建的二叉树中的指定结点的度 C++实现
利用先序递归遍历算法创建二叉树并输出该二叉树中指定结点的度。约定二叉树结点数据为单个大写英文字符。当接收的数据是字符“#”时表示该结点不需要创建,否则创建该结点。最后再输出创建完成的二叉树中的指定结点的度。注意输入数据序列中的字符“#”和非“#”字符的序列及个数关系,这会最终决定创建的二叉树的形态。输入用例分2行输入,第一行接受键盘输入的由大写英文字符和“#”字符构成的一个字符串(用于创建对应的二叉树),第二行为指定的结点数据。用一行输出该用例对应的二叉树中指定结点的度。原创 2023-06-29 21:53:48 · 186 阅读 · 0 评论 -
SWUST OJ 1014: 交换排序算法的设计与实现——冒泡排序 C++实现
编程实现冒泡排序,按照非递减排序,测试数据为整数。第一行输出第一趟冒泡排序的结果。第一行是待排序数据元素的个数;第二行是待排序的数据元素。原创 2023-06-29 21:49:15 · 203 阅读 · 0 评论 -
SWUST OJ 941: 有序顺序表的合并操作的实现 C++实现
已知两非递减的顺序线性表,要求合并成一个新的非递减顺序线性表。输入包含四行,第一行为自然数n,表示第一个非递减顺序线性表的长度;输出:用一行输出合并后的非递减顺序线性表,各数之间用一个。第三行为自然数m,表示第二个非递减顺序线性表的长度;第二行为n个自然数构成的非递减顺序线性表;第四行为m个自然数构成的非递减顺序线性表。原创 2023-06-24 14:08:41 · 386 阅读 · 1 评论 -
SWUST OJ 943: 顺序表插入操作的实现 C++实现
建立长度为n的顺序表,在指定的数据元素item之前插入数据元素data。如果指定的数据元素item不存在,则将data插入到顺序表的尾端。第四行为要插入的数据元素data;第三行为指定的数据元素item;输出结果为顺序表中的数据元素。第二行为顺序表中的数据元素;第一行为顺序表的长度n;原创 2023-06-24 14:12:17 · 380 阅读 · 1 评论 -
SWUST OJ 952: 单链表的插入操作的实现 C++实现
第一行为自然数n,表示链式线性表的长度;第二行为n个自然数表示链式线性表各元素值;第三行为指定插入的位置i;第四行为待插入数据元素data。指定插入位置合法时候,输出插入元素后的链式线性表的所有元素,元素之间用一个空格隔开。输入不合法,输出"error!建立长度为n的单链表,在第i个结点之前插入数据元素data。原创 2023-06-24 14:13:46 · 322 阅读 · 3 评论 -
SWUST OJ 954: 单链表的链接 C++ 实现
建立长度为n的单链表A和长度为m的单链表B。编程实现将B表链接在A表的尾端,形成一个单链表A。数据类型指定为字符型。输出为链接好后的A表中的所有数据元素。第二行为A表中的数据元素;第四行为B表中的数据元素。第一行为A表的长度n;第三行为B表的长度m;原创 2023-06-24 14:17:06 · 374 阅读 · 0 评论 -
SWUST OJ 953: 单链表的删除操作的实现 C++实现
指定删除位置合法时候,输出删除元素后的链式线性表的所有元素,元素之间用一个空格隔开。建立长度为n的单链表,删除第i个结点之前的结点。第二行为n个自然数表示链式线性表各元素值;第一行为自然数n,表示链式线性表的长度;输入不合法,输出"error!第三行为指定的删除参数i。原创 2023-06-24 14:17:44 · 324 阅读 · 0 评论 -
SWUST OJ 956: 约瑟夫问题的实现 C++实现
n个人围成一个圈,每个人分别标注为1、2、...、n,要求从1号从1开始报数,报到k的人出圈,接着下一个人又从1开始报数,如此循环,直到只剩最后一个人时,该人即为胜利者。例如当n=10,k=4时,依次出列的人分别为4、8、2、7、3、10,9、1、6、5,则5号位置的人为胜利者。给定n个人,请你编程计算出最后胜利者标号数。(要求用单循环链表完成。输出最后胜利者的标号数。原创 2023-06-24 14:18:44 · 328 阅读 · 2 评论 -
SWUST OJ 957: 逆置单链表 C++实现
建立长度为n的单链表,然后将其数据元素逆置,即第1个元素变为最后一个元素,第2个元素变为倒数第2个元素,以此类推,最后一个元素变为第1个元素。(处理的数据类型为字符型。第二行为链表中的n个数据元素的值。第一行为链表长度n;原创 2023-06-24 14:22:28 · 200 阅读 · 0 评论 -
SWUST OJ 960: 双向链表的操作问题 C++实现
建立一个长度为n的带头结点的双向链表,使得该链表中的数据元素递增有序排列。(必须使用双向链表完成,数据类型为整型。输出双向链表中的数据元素的值。第二行:链表中的数据元素。第一行:双向表的长度;原创 2023-06-24 14:24:40 · 136 阅读 · 1 评论 -
SWUST OJ 961: 进制转换问题 C++实现
建立顺序栈或链栈,编写程序实现十进制数到二进制数的转换。输入只有一行,就是十进制整数。原创 2023-06-24 14:26:14 · 319 阅读 · 0 评论 -
SWUST OJ 962: 括号匹配问题 C++实现
假设表达式中允许包含两种括号:圆括号和方括号。编写一个算法判断表达式中的括号是否正确配对。由括号构成的字符串,包含”(“、”)“、”[“和”]“。如果匹配输出YES,否则输出NO。原创 2023-06-24 14:27:43 · 208 阅读 · 1 评论 -
SWUST OJ 964: 数细胞 C++实现
一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。编程需要用到的队列及其相关函数已经实现,你只需要完成count函数以及主函数即可。第一行输入两个整数,分别代表矩阵的行和列 输入m*n的矩阵,由数字0到9组成。原创 2023-06-25 13:43:00 · 436 阅读 · 0 评论 -
SWUST OJ 965: 循环队列 c++实现
根据给定的空间构造顺序循环队列,规定队满处理方法为少用一个元素空间。例如,给定5个元素空间构造循环队列,则只能存放4个元素。试根据入队及出队操作判断队列最后的元素存放情况,并输出最后队列中的元素值,即完成给定入队及出列操作后一次性全部出队的元素值。要求采用顺序队列完成,少用一个存储空间的方法区分队列的空和满。第二行为操作次k,接下来k行为出队入队操作,每行各代表一次操作。入队用in表示,出队用out表示,如果是入队,则in隔一空格后为一整数,表示入队元素值。输出完成所有入队出队操作后,一次性出队元素。原创 2023-06-25 13:43:19 · 272 阅读 · 0 评论