
数据结构
文章平均质量分 56
数据结构
Spikeeee-
消磨到死的那些希望的亡灵:苍白、凄惨、哭的哀伤。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构 - 左倾红黑树(2-3-树推广)/ C++实现
红黑树的“适度平衡”,由AVL树的“高度平衡”,降低到“任意节点左右子树的高度,相差不超过2倍”,也降低了动态操作时调整的频率。对于一颗动态查找树,如果插入和删除操作比较少,查找操作比较多,采用AVL树比较合适,否则采用红黑树更合适。为了保持AVL树的平衡性,插入和删除操作后,非常频繁地调整全树整体拓扑结构,代价较大。上进一步放宽条件,引入红黑树的结构。原创 2023-01-12 23:34:32 · 324 阅读 · 1 评论 -
数据结构 - AVL树 (Adelson-Velsky and Landis Tree)
二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序,二叉搜索树将有可能退化为单支树,此时查找元素相当于在顺序表中查找元素,效率低下,时间复杂度接近O(n)。最优情况下,二叉搜索树为完全二叉树。最差情况下,二叉搜索树退化为单支树。AVL树是一颗自平衡的二叉树,是对BST的改进。每个节点均有一个平衡因子ppp(p=Height(TL)−Height(TR)p=Height(TL)−Height(TR。原创 2022-12-22 18:59:18 · 820 阅读 · 0 评论 -
数据结构 - 哈希表(unordered_map)
散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存储存位置的数据结构。也就是说,它通过计算出一个键值的函数,将所需查询的数据映射到表中一个位置来让人访问,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表。对不同的关键字可能得到同一散列地址,即k1≠k2k1=k2,而f(k1)=f(k2)f(k1)=f(k2),这种现象称为冲突(英语:Collision)。原创 2022-10-11 14:39:25 · 1155 阅读 · 0 评论 -
Early Orders (贪心,单调栈)
题目链接:https://ac.nowcoder.com/acm/contest/12606/E贪心选择小数放在前面,且保证每个数均出现一次#include <iostream>#include <cstdio>#include <cmath>#include <vector>#include <stack>using namespace std;#define ll long longconst int maxn = 20000原创 2021-03-08 23:31:54 · 238 阅读 · 0 评论 -
On Average They‘re Purple (bfs求最短路)
题目链接:https://ac.nowcoder.com/acm/contest/12606/H由分析得所求颜色变化数为最短路径上步数减一利用bfs求最短路径#include <iostream>#include <cstdio>#include <cmath>#include <vector>#include <queue>using namespace std;#define ll long longconst int IN原创 2021-03-08 19:43:45 · 248 阅读 · 0 评论 -
边权最短路径-Floyd算法 (ACM学习笔记)
有向图,不可解决边权为负的问题#include<cstdio>#include<iostream>#include<algorithm>using namespace std;const int maxn = 1e2 + 5;const int INF = 0x3f3f3f3f;int main() { int map[maxn][maxn...原创 2020-04-28 17:31:18 · 262 阅读 · 0 评论 -
CCF 202009-3 点亮数字人生(拓扑排序)
#include<bits/stdc++.h>#define TLE ios::sync_with_stdio(0),cin.tie(0)#define long long llconst int INF = 0x3f3f3f3f;const int maxn = 2 * 10005;using namespace std;map<string, int> mp;int Opter[maxn], In[maxn], InDeg[maxn], k, m, n, T, s,原创 2020-10-05 15:55:42 · 643 阅读 · 0 评论 -
数据结构 - 树的创建和遍历
1、采用书上第 161 页定义的图的邻接矩阵存储表示,编写算法实现图的下列基本操作。 (1)构造无向图 (2)构造无向网 (3)构造有向图 (4)构造有向网2、采用书上第 163 页定义的图的邻接表存储表示,编写算法实现图的下列基本操作。 (1)构造图 (2)深度优先搜索遍历图 (3)广度优先搜索遍历图12.1#include <stdio.h>#include <stdlib.h>#include <limits.h>#define TRUE 1#defi原创 2020-11-30 18:58:31 · 846 阅读 · 0 评论 -
数据结构 - 赫夫曼编码的存储表示和实现
1.采用书上第147页定义的赫夫曼树和赫夫曼编码的存储表示,编程实现从叶子到根逆向求赫夫曼编码和从根到叶子求赫夫曼编码11.1#include <stdio.h>#include <stdlib.h>#include <string.h>#define _for(i, a, b) for (int i = (a); i < (b); ++i)#define sc scanf#define pr printftypedef struct node{原创 2020-11-28 16:55:28 · 774 阅读 · 0 评论 -
数据结构 - 树的创建和遍历
1、采用书上第136页定义的树的孩子兄弟链表存储表示,编写递归算法实现树的下列基本操作。(1)构造树 (2)复制树 (3)销毁树 (4)先根遍历树 (5)清空树 (6)后根遍历树 (7)求树的深度 (8)求树的结点数 (9)求树的叶子结点数2、采用书上第136页定义的树的孩子兄弟链表存储表示,编写非递归算法实现树的下列基本操作。(1)构造树 (2)先根遍历树 (3)后根遍历树 (4)层次遍历树 (5)求树的深度 (6) 求树的叶子结点数 (7)交换树的左右子树10.1#include原创 2020-11-28 16:53:48 · 1441 阅读 · 0 评论 -
数据结构 - 线索二叉树的创建和遍历
1、采用书上第133页定义的线索二叉树的线索链表存储表示,编写实现二叉树的下列基本操作。建立中序线索二叉树 中序遍历线索二叉树9.1//2020.11.13#include <stdio.h>#include <stdlib.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Statu原创 2020-11-28 16:51:58 · 658 阅读 · 0 评论 -
数据结构 - 二叉树的创建和遍历
1、采用书上第127页定义的二叉树的二叉链表存储表示,编写递归算法实现二叉树的下列基本操作。(1)构造二叉树 (2)复制二叉树 (3)销毁二叉树 (4)先序遍历二叉树 (5)中序遍历二叉树 (6)后序遍历二叉树 (7)求二叉树的深度 (8)求二叉树的结点数 (9)求二叉树的叶子结点数 (10)交换二叉树的左右子树2、采用书上第127页定义的二叉树的二叉链表存储表示,编写非递归算法实现二叉树的下列基本操作。(1)构造二叉树 (2)先序遍历二叉树 (3)中序遍历二叉树 (4)后序遍历二叉树 (5)原创 2020-11-28 16:50:13 · 908 阅读 · 0 评论 -
数据结构 - 数组的存储表示和实现
采用书上第93页定义的数组的顺序存储表示,编程实现数组的下列基本操作(1) 构造数组 (2)销毁数组 (3)取数组元素值 (4) 给数组元素赋值2.采用书上第98页定义的稀疏矩阵的三元组顺序表存储表示,编程实现矩阵的转置运算算法和快速转置算法。7.1#include<malloc.h>#include<stdio.h>#include<process.h>#include<math.h>#include<stdarg.h>#.原创 2020-11-28 16:47:38 · 884 阅读 · 0 评论 -
数据结构 - 串的存储表示和实现
1、采用书上第73页定义的串的定长顺序存储表示,编程实现串的下列基本操作。(1)串联接 (2)求子串2、采用书上第75页定义的串的堆分配存储表示,编程实现串的下列基本操作。(1)生成串 (2)取串长度 (3)清空串 (4)串联接(5)求子串 (6)复制串 (7)串插入 (8)串删除3、采用书上第73页定义的串的定长顺序存储表示,编程实现串的模式匹配算法及其改进算法。6.1#include <stdi原创 2020-11-28 16:44:51 · 642 阅读 · 0 评论 -
数据结构 - 队列的存储表示和实现
1、采用书上第 61 页定义的队列的链式存储结构,编程实现队列的下列基本操作。(1)构造空队列(2)销毁队列 (3)清空队列 (4)判断队列是否为空(5)求队列长度 (6)取队头元素 (7)插入队尾元素 (8)删除队头元素 (9)输出队列元素2、采用书上第 64 页定义的队列的顺序存储结构,编程实现循环队列的下列基本操作。(1)构造空队列(2)清空队列 (3)判断队列是否为空(4)求队列长度 (5)取队头元素 (6)插入队尾元素 (7)删除队头元素 (8)输出队列元素5.1#include &原创 2020-11-28 16:41:02 · 435 阅读 · 0 评论 -
数据结构 - 栈的实现和应用
1、采用书上第 46 页定义的栈的顺序存储表示,编程实现栈的下列基本操作。(1)初始化顺序栈 (2)创建顺序栈 (3)判断栈空 (4)输出顺序栈(5)取栈顶元素 (6)入栈 (7)出栈2、采用栈的顺序存储表示,编程实现表达式中圆括号“( )”和方括号“[ ]”匹配的检验。4.1#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <time.h>#define TRU原创 2020-11-28 16:38:20 · 530 阅读 · 0 评论 -
数据结构 - 线性表的存储及其他操作
1、采用线性表动态分配顺序存储结构,编程实现顺序表中数据元素的逆置操作。2、有一个带头结点的线性链表L,编程实现链表中数据元素的逆置操作。要求不另设新结点。3、采用线性表动态分配顺序存储结构,编程实现顺序表中数据元素按值非递减排列。4、有一个带头结点的线性链表L,编程实现链表中数据元素按值非递减排列。要求不另设新结点。3.1#include <cstring>#include <string.h>#include <iostream>#include &l原创 2020-11-28 16:36:07 · 375 阅读 · 0 评论 -
数据结构 - 顺序表
1,采用书上第 28 页定义的线性表链式存储结构,编程实现书中算法 2.8、算法 2.9、算法 2.10、算法 2.11,以及输出线性链表的算法。另外,编写主函数对所实现的算法进行测试。2、采用线性表的链式存储结构,实现线性链表的合并操作:①设有线性链表 La 和 Lb,试设计算法将 La 和 Lb 归并为新的线性链表 Lc;②设线性链表 La 和 Lb 中的数据元素为整数,且均已按值非递 减有序排列,要求 Lc 中的数据元素也按值非递减有序排列。2.1#include <cstring>原创 2020-11-28 16:33:14 · 142 阅读 · 0 评论 -
数据结构 - 项目1 - 二叉搜索树应用(B*树)
Sample Input:4 28 19fishanimalbirdfruitanimal cat 30fish goldfish 50animal dog 20bird blackbird 10animal bear 10fruit mango 100animal alligator 50animal tiger 3animal lion 3fish swordfish 10animal deer 5animal cow 15fish garfish 5fish ..原创 2020-11-27 14:05:05 · 345 阅读 · 0 评论 -
数据结构 - 线性表
#include <cstring>#include <string.h>#include <iostream>#include <stdio.h>#include <algorithm>#include <cmath>#include <cstring>#include <string>#include <vector>#include <map>#include &原创 2020-11-22 22:49:47 · 173 阅读 · 0 评论