
数据结构
InsaPulala
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
线性表的顺序实现 结构体&类实现
#include <bits/stdc++.h> using namespace std; #define initsize 50 #define M 100 #define EType int /* 线性表的顺序实现 动态生成数组 TODO: 动态插入时需动态扩容 封装成类 */ /* typedef struct { EType *data; int length,maxsize; } Sqlist; bool creatList(Sqlist &L) {原创 2021-05-29 11:40:38 · 223 阅读 · 0 评论 -
栈在括号匹配中的应用——数据结构C++
算法思想: 1、输入第一个字符,如果为右括号则输出“error”,否则压入栈。 2、依次读取后续字符,若为左括号,压入栈;右括号则弹出栈顶元素进行匹配 3、匹配成功则继续step2,失败则输出“error” 4、直到遇到“#”结束 5、如果栈循环结束后为空,表示全部匹配成功,输出“true”,否则“error” #include <bits/stdc++.h> #include <string> using namespace std; /* you can input: ()[]原创 2021-05-28 21:48:10 · 407 阅读 · 0 评论 -
排序
【问题描述】给出一组数据,请用希尔、快速、冒泡、双向冒泡、堆排序将其按照从小到大的顺序排列好。 【输入形式】原始数据,以0作为输入的结束 【输出形式】每一趟增量排序后的结果 【样例输入】8 3 6 1 68 12 19 3 1 0 【样例输出】1 1 3 3 6 8 12 19 68 【样例输入】5 3 9 8 2 4 1 7 10 6 0 【样例输出】1 2 3 4 5 6 7 8 9 10 S...原创 2019-07-10 10:36:43 · 530 阅读 · 1 评论 -
二叉排序树
【问题描述】 请根据输入的数据创建一棵二叉排序树。然后执行相应操作。 1 删除某一值为x的结点 2 求指定结点y在二叉排序树中的层数 【输入形式】 结点数据,以0代表结束输入。 待删除的x,待求层数的y 【输出形式】 删除后的二叉排序树的中序遍历结果 y所在的层数 【样例输入】 29 39 15 25 28 10 11 2 0 10 11 【样例输出】 2 11 15 25 28 29 39 4 ...原创 2019-07-10 10:22:09 · 608 阅读 · 0 评论 -
迪杰斯特拉最短路径
【问题描述】 在带权有向图G中,给定一个源点v,求从v到G中的其余各顶点的最短路径问题,叫做单源点的最短路径问题。 在常用的单源点最短路径算法中,迪杰斯特拉算法是最为常用的一种,是一种按照路径长度递增的次序产生最短路径的算法。 在本题中,读入一个有向图的带权邻接矩阵(即数组表示),建立有向图并按照以上描述中的算法求出源点至每一个其它顶点的最短路径长度。 【输入形式】 输入的第一行包含2个正整数n和...原创 2019-07-10 10:18:59 · 436 阅读 · 0 评论 -
图的遍历及其连通性
【问题描述】 根据输入的图的邻接矩阵A,判断此图的连通分量的个数。 【输入形式】 第一行为图的结点个数n,之后的n行为邻接矩阵的内容,每行n个数表示。其中A[i][j]=1表示两个结点邻接,而A[i][j]=0表示两个结点无邻接关系。 【输出形式】 输出此图连通分量的个数。 【样例输入】 5 0 1 1 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 【样例...原创 2019-07-10 10:13:39 · 3090 阅读 · 1 评论 -
拓扑排序
有向无环图的拓扑排序 【问题描述】 由某个集合上的一个偏序得到该集合上的一个全序,这个操作被称为拓扑排序。偏序和全序的定义分别如下:若集合X上的关系R是自反的、反对称的和传递的,则称R是集合X上的偏序关系。设R是集合X上的偏序,如果对每个x,y∈X必有xRy或yRx,则称R是集合X上的全序关系。由偏序定义得到拓扑有序的操作便是拓扑排序。 拓扑排序的流程如下: 在有向图中选一个没有前驱的顶...原创 2019-07-10 10:04:00 · 863 阅读 · 0 评论 -
关键路径
【问题描述】AOE网示意图若在带权的有向图中,以顶点表示事件,以有向边表示活动,边上的权值表示活动的开销(如该活动持续的时间),则此带权的有向图称为AOE网。如果用AOE网来表示一项工程,那么,仅仅考虑各个子工程之间的优先关系还不够,更多的是关心整个工程完成的最短时间是多少;哪些活动的延期将会影响整个工程的进度,而加速这些活动是否会提高整个工程的效率。因此,通常在AOE网中列出完成预定工程计划所需...原创 2019-07-10 10:04:16 · 669 阅读 · 0 评论 -
哈弗曼树
哈夫曼编码 【问题描述】 读入n个字符所对应的权值,自底向上构造一棵哈夫曼树,自顶向下生成每一个字符对应的哈夫曼编码,并依次输出。 【输入形式】 输入的第一行包含一个正整数n,表示共有n个字符需要编码。其中n不超过100。 第二行中有n个用空格隔开的正整数,分别表示n个字符的权值。 【输出形式】 共n行,每行一个字符串,表示对应字符的赫夫曼编码。 【注意】保证每次左子树比右子树的权值小;如出...原创 2019-07-10 10:02:42 · 367 阅读 · 0 评论 -
prim&kruska
#include <bits/stdc++.h> using namespace std; #define MAXV 50 typedef struct { int no;//顶点编号 char info;//顶点其他信息 } vertextype; typedef struct //图的定义 { int edges[MAXV][MAXV];//邻接矩阵 ...原创 2019-07-10 10:03:38 · 169 阅读 · 0 评论 -
稀疏矩阵快速转置
【问题描述】 稀疏矩阵的存储不宜用二维数组存储每个元素,那样的话会浪费很多的存储空间。所以可以使用一个一维数组存储其中的非零元素。这个一维数组的元素类型是一个三元组,由非零元素在该稀疏矩阵中的位置(行号和列号对)以及该元组的值构成。而矩阵转置就是将矩阵行和列上的元素对换。 请你实现一个快速的对稀疏矩阵进行转置的算法。 【输入形式】 输入的第一行是两个整数r和c(r<...原创 2019-07-10 10:06:03 · 372 阅读 · 0 评论 -
二叉树结点的共同祖先问题
【问题描述】 假设二叉树采用二叉链表方式存储,root指向根结点,p所指结点和q所指结点为二叉树中的两个不同结点,且互不成为根到该结点的路径上的点,编程求解距离它们最近的共同祖先。 【输入形式】 二叉树的前序和中序遍历序列,用以创建该二叉树的链式存储结构;以及二叉树的两个结点数据 x 和 y 【输出形式】 结点数据值为 x 和结点数据值为 y 的最近的共同祖先,若没有共同祖先则输出NULL 【样例...原创 2019-07-10 10:03:20 · 551 阅读 · 1 评论 -
二叉树
【问题描述】 给出一个按照先序遍历得出的字符串,’#’ 代表空的子节点,大写字母代表节点内容。请通过这个字符串建立二叉树,并采用非递归的先序、中序、后序遍历的算法分别输出每一个非空节点。 【输入形式】 输入只有一行,包含一个字符串S,用来建立二叉树。保证S为合法的二叉树先序遍历字符串,节点内容只有大写字母,且S的长度不超过100。 【输出形式】 共有三行,每一行包含一串字符,表示分别按非递归的先序...原创 2019-07-10 10:03:01 · 855 阅读 · 0 评论 -
顺序表的初始化、插入、删除、查找
【问题描述】 复习考研累了的时候看看一集二十分钟左右的《生活大爆炸》也不失为一种乐趣。在剧中Sheldon可以说是一个极品,真不知Leonard是如何忍受这位极品室友成天的唠叨。 你知道么?Sheldon有一个神秘的小本本,记录了所有他从小开始讨厌的人名。Stuart这位漫画店老板就是小本本的一员哦,谁叫他常常毫不客气地挤兑Sheldon,曾多次赌赢过Sheldon呢。 Penny是一个漂亮的女孩...原创 2019-03-30 14:23:15 · 5468 阅读 · 0 评论 -
C++链表合并
【问题描述】 两个非降序链表的并集,例如将链表1-&gt;2-&gt;3 和 2-&gt;3-&gt;5 并为 1-&gt;2-&gt;3-&gt;5,只能输出结果,不能修改两个链表的数据。 【输入形式】 第一行首先是数据的个数,然后是第一个链表的各结点值,以空格分隔。 第二行首先也是数据的个数,然后是第二个链表的各结点值,以空格分隔。 【输出形式】 合并好的链表,以非降序排列,值与值原创 2019-03-30 14:22:11 · 3666 阅读 · 2 评论 -
11
#include<bits/stdc++.h> using namespace std; typedef struct node{ double coef; double exp; node *next; }pnode,*plist; void creat(plist *L) { (*L)=(plist )malloc(sizeof(pnode)); (...原创 2019-03-20 17:16:33 · 144 阅读 · 0 评论 -
双向循环链表的操作
【问题描述】输入n个整数,创建一个双向循环链表进行存储。这些整数从第二个开始,递增有序(设a2<a3<…<an) (ai为第i个整数)。试编写程序,创建双向循环链表,依次将输入的整数存储在该链表的各节点中。然后,将第一个结点删除并插入链表中的适当位置,使整个链表递增有序。 【输入形式】先输入整数的个数,再输入整数列。 【输出形式】以整数递增的顺序,依次输出双向循环链表各个节点存储...原创 2019-03-30 14:22:30 · 1870 阅读 · 0 评论