![](https://img-blog.csdnimg.cn/20200716155126721.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构
文章平均质量分 92
数据结构
Worthy_Wang
一辈子没办法做太多事情,所以每一件都要做到精彩绝伦。
展开
-
哈希表(散列表) C++实现
文章目录哈希函数哈希函数的构造方法处理散列冲突的方法散列表性能分析散列表C++代码实现哈希函数哈希函数就是 关键字Key 到 值Value 的映射:Value = f(Key)Value反映的是关键字Key的存储地址。哈希函数的构造方法直接定址法f(Key) = a * Key + b例如存放不同出生年份的人口数量,出生年份是关键字,那么可以用直接定址法。直接定址法的优点是简单均匀,也不会产生冲突;缺点是该方法适合表比较小且连续的情况,所以 该方法虽然简单但是并不常用。数原创 2021-02-24 15:51:53 · 1534 阅读 · 1 评论 -
树(七):红黑树(RBT) C++实现
文章目录原创 2021-02-23 12:40:01 · 448 阅读 · 0 评论 -
树(六):B树与B+树
文章目录前言B树B+树B+树与B树的区别前言之前讲到的树,它本身只能够存储一个元素,如果在元素非常多的时候,树的孩子和树的高度就会很大,读取的过程中势必会消耗更多的时间。为了避免这一现象,我们引入了同一个节点中可以存储多个元素的多路查找树。多路查找树不同于二叉树,二叉树只能由两个孩子,而多路查找树可以有多个孩子。例如2-3树的每个节点可以有两个或者三个孩子,2-3-4树2-3树2-3树是一棵多路查找树,每一个节点都具有两个孩子(称为2节点)或者三个孩子(称为3节点)。2-3树的所有叶子都需原创 2021-02-18 18:26:35 · 1515 阅读 · 0 评论 -
图论(四)拓扑排序与关键路径
图论(四)拓扑排序与关键路径文章目录图论(四)拓扑排序与关键路径前言一.拓扑排序二.关键路径前言在学了前面三章之后,接下来学习图论中最后的算法:拓扑排序与关键路径算法首先来了解一些基本概念。AOV网与AOE网:AOV(activity on vertex) 网:在执行后继节点之前,必须将所有指向后继节点的前驱节点都完成AOE(activity on edge) 网:在执行后继边的活...原创 2020-04-26 16:12:57 · 1441 阅读 · 4 评论 -
图论(三)最小生成树:Prim算法与Kruskal算法
图论(三)最小生成树:Prim算法与Kruskal算法文章目录图论(三)最小生成树:Prim算法与Kruskal算法前言一.Prim算法二.Kruskal算法前言在学习了前两章的内容后,接下来学习最小生成树算法。最小生成树的意思是将所有的顶点都连通,所有的边加起来的权值最小的图(成形为树)。此类算法广泛用于城市建设中,例如让所有的城市全部连通,使其造价最小。为了防止最小生成树中没有环...原创 2020-04-26 16:12:48 · 519 阅读 · 0 评论 -
图论(二) 最短路径:Dijkstra算法与Floyd算法
友元一.友元函数如果类A将函数func作为友元函数,那么:func可以访问类A中protected, private 修饰的成员;func并不属于类A,而是作为一个函数单独存在,即func可以作为很多类的友元函数。#include <iostream>#include "help.h"using namespace std;class A {public: ...原创 2020-04-26 16:12:38 · 544 阅读 · 0 评论 -
图论(一) 图的DFS与BFS
快速排序:找出最大最小的前K个数一.找出最小的k个数:利用快速排序的原理,partition函数会找出mid值,mid左边的数都比mid小,而mid右边的数都比mid大所以只要找出k==mid的情况即可找到topK的数时间复杂度:O(logn)* O(n) = O(nlogn)其中O(n)是从头到尾遍历的复杂度,O(logn)是进行partition的复杂度空间复杂度:O(n)其中...原创 2020-04-26 16:12:28 · 814 阅读 · 0 评论 -
树(二):线索二叉树(ThreadBiTree) 线索化及其非递归遍历C++
线索二叉树 C++以此二叉树为例进行创建:前序法创建节点,输入’#'表示为NULL用前序创建的话需要输入 :ABD##E##C#G##前序遍历:ABD##E##C#G##中序遍历:#D#B#E#A#C#G#后序遍历: ##D##EB###GCA层序遍历: ABCDEG在进行线索二叉树线索化的过程中我们并不设置 头结点, 而是**直接设置一个全局变量 指针 Prev **, 表示指...原创 2019-12-13 11:42:46 · 446 阅读 · 0 评论 -
树(四):平衡二叉树(AVL) C++实现
线索二叉树 C实现以此二叉树为例进行创建:前序法创建节点,输入’#'表示为NULL用前序创建的话需要输入 :ABD##E##C#G##前序遍历:ABD##E##C#G##中序遍历:#D#B#E#A#C#G#后序遍历: ##D##EB###GCA层序遍历: ABCDEGThreadBiTree.h:#pragma once#include <stdio.h>#in...原创 2019-12-11 20:01:37 · 411 阅读 · 0 评论 -
树(五):哈夫曼树(HuffmanTree) C++实现
前序+中序构造出二叉树,后序+中序构造出二叉树 C++前序+中序构造二叉树此问题对应 leetcode_105 题:解法一:思路:1.首先此题的整体框架是用前序法创建树的框架,那么递归条件的出口就是 preorder遍历完成的时候即可。2.inorder 需要设置两个 左右边界, mid值通过找到preoder[i]在inorder中的位置下标, 设置左右下标边界的意义在于判断mid(...原创 2019-12-11 15:23:49 · 436 阅读 · 0 评论 -
树(三):二叉排序树(BST) C++实现
二叉树 前、中、后序遍历非递归C实现以此二叉树为例进行创建:前序法创建节点,输入’#'表示为NULL用前序创建的话需要输入 :ABD##E##C#G##前序遍历:ABD##E##C#G##中序遍历:#D#B#E#A#C#G#后序遍历: ##D##EB###GCA层序遍历: ABCDEG中序遍历第一次写的代码在这里使用栈代替递归使效率提升了很多,在第一次写的过程中,判断...原创 2019-12-10 21:00:16 · 307 阅读 · 0 评论 -
树(一):二叉树(BiTree) 创建+销毁+前中后层遍历(递归+非递归)C++
二叉树的创建,遍历 C语言实现以此二叉树为例进行创建:前序法创建节点,输入’#'表示为NULL用前序创建的话需要输入 :ABD##E##C#G##前序遍历:ABD##E##C#G##中序遍历:#D#B#E#A#C#G#后序遍历: ##D##EB###GCA层序遍历: ABCDEG这里的’#’ 只是用来方便与区分 NULL,也可以控制程序不进行打印问题一:考虑一下是否能够使...原创 2019-12-09 19:51:11 · 1509 阅读 · 1 评论 -
队列 C底层实现
顺序队列 循环队列 链式队列 C语言实现1.顺序队列Queue.h#pragma once#include <stdio.h>#include <stdlib.h>#define true 1#define false 0#define MAX 5typedef int bool;typedef int ElemType;typedef struct ...原创 2019-12-09 14:37:02 · 397 阅读 · 0 评论 -
栈 C底层实现
顺序栈与链栈 C语言实现顺序栈Stack.h#pragma once#include <stdio.h>#include <stdlib.h>#define true 1#define false 0#define MAX 50typedef int bool;typedef int ElemType;typedef struct Stack { E...原创 2019-12-04 11:11:14 · 335 阅读 · 0 评论 -
链表 C/C++ 底层实现
单链表C语言SingleLinkList.h:#pragma once#include <stdio.h>#include <stdlib.h>typedef char ElemType;typedef struct Node{ ElemType data; struct Node *next;}Node, *LinkList;//链表初始化voi...原创 2019-12-03 17:53:04 · 342 阅读 · 0 评论 -
排序算法(数组版+链表版)C++实现
排序算法当我们在使用排序算法的时候,我们应当从时间复杂度(最好,最坏,平均),空间复杂度,稳定性三方面进行考虑。交换排序冒泡排序冒泡排序是最基础的一种排序方法,最坏时间复杂度平均时间复杂度是O(n2),因为最坏情况下以及大多数情况下它都会进行 n(n-1)/2 次比较,最好时间复杂度为O(n),即第一遍就可以排序好。而空间复杂度为 O(1), 因为系统并没有提供额外空间;为稳定算法。...原创 2019-10-09 21:24:37 · 418 阅读 · 0 评论