
数据结构
文章平均质量分 68
发如雪-ty
一个工作多年的程序员,一直从事C++开发方面的工作,曾有幸在安防行业深耕4年,并有幸在工业检测行业工作至今已有4年,主要负责系统软件的设计与开发,个人编程的信仰:不要盲目学习酷炫的东西,最重要的依然是内功。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二叉树的最近公共祖先LCA
LCA最近公共祖先原创 2023-06-09 00:45:53 · 624 阅读 · 0 评论 -
软件设计经验简谈
软件设计经验简谈原创 2023-01-07 16:57:24 · 817 阅读 · 0 评论 -
线索二叉树
线索二叉树实现原创 2022-12-07 23:44:47 · 152 阅读 · 0 评论 -
动态规划入门
动态规划理论与练习原创 2022-12-07 23:38:47 · 449 阅读 · 0 评论 -
什么是哈夫曼树
哈夫曼树的概念及其代码实现原创 2022-12-07 23:29:40 · 526 阅读 · 0 评论 -
数据结构-图
数据结构图原创 2022-09-16 00:40:44 · 219 阅读 · 0 评论 -
数据结构-树的表示与存储
树的表示与存储原创 2022-08-28 17:40:05 · 238 阅读 · 0 评论 -
算法设计之-世界上最好理解的堆排序
堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。 堆 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图: 同时,我们对堆中的结点按层进行编号,将这种逻辑结构映射到数组中就是下面这个样子 该数组从逻辑上讲就是一个堆结构,我们用简单的公式来描述一下堆的定义就是: 大顶堆:arr[i]原创 2021-01-14 22:57:18 · 384 阅读 · 1 评论 -
数据结构之-简单实现字典树
字典树原创 2020-12-15 23:50:39 · 345 阅读 · 3 评论 -
动态创建二叉树
#include <iostream> using namespace std; typedef struct _BinaryTree{ char ch; _BinaryTree *pLeft; _BinaryTree *pRight; }BTreeNode; //create 先序动态创建二叉树 void CreateBitnaryTree(BTreeNode **pNode) { char ch; cin >> ch; if (ch == '#') {原创 2020-12-06 19:15:31 · 859 阅读 · 0 评论 -
数据结构-二叉树的层次遍历18
二叉树的层次遍历 之前我已经讲解过了二叉树的先序遍历,中序遍历、后序遍历今天来看一个层次遍历,就以下面的树为例子吧,层次遍历就是一层一层的遍历,下图的层次遍历的结果是1,2,3,4,5,6,7那就看代码吧! #include <iostream> #include<queue> using namespace std; typedef struct BiTNode {...原创 2020-03-02 21:41:20 · 251 阅读 · 0 评论 -
数据结构-图的存储和遍历17
图的存储和遍历17 这部分代码比较多,然后文件已经打包, 先看看邻接矩阵,这个是找的资料,看着不错就拿来用吧. 就以下面这个多为例吧,代码包含,图的存储和深度优先遍历和广度优先遍历。 请看深度优先: 广度优先: 接下来来是要实现的代码的头文件 #ifndef _MGRAPH_H_ #define _MGRAPH_H_ typedef void MGraph; typedef void MV...原创 2020-02-27 23:44:03 · 469 阅读 · 0 评论 -
数据结构-哈希表16
哈希表 我就直接以我做的笔记开始吧 请看下图,其实数组就是一个哈希表,哈希表是一种数据结构,以键值对的方式存储。 演示代码: int main(int argc, char *argv[]) { Hash* hash = Hash_Create(); struct Student s1 = {"9001201", "Delphi", 30}; stru...原创 2020-02-27 15:57:21 · 264 阅读 · 0 评论 -
数据结构-平衡二叉树01-15
平衡二叉树01 平衡二叉树(AVL)的定义 首先,平衡二叉树是搜索二叉树。其次,平衡二叉树的左子树和右子树高度的绝对值不超过1. LL型 最终调整为 RR型 最终调整为 LR型 转为: RL型 转为: 对于LR,RL两种类型先转为LL,RR类型,然后再根据LL,RR类型转换 以下是两个例子 ...原创 2020-02-26 14:58:08 · 202 阅读 · 0 评论 -
数据结构-二分搜索树14
二分搜索树 Binary Search Tree 性质: a. 二分搜索树是二叉树 b.二分搜索树的每一个节点的值: 大于其左子树的所有节点的值 小于其右子树的所有节点的值 c.每一颗子树也是二分搜索树 e.存储的元素必须具有可比较...原创 2020-02-25 15:56:17 · 162 阅读 · 0 评论 -
数据结构-图的基本信息13
图的基本信息13 1. 图的定义 图(Graph)是由顶点的有穷非空集合和顶点之间的边组成,通常表示为:G(V,E),其中,G 表示一个图,V 是图 G 中顶点的集合,E 是图 G 中边的集合。记作G=(V, E) G:Graphics 图形 V:Vertex 顶点 E:Edge 边 • 线性表中将数据元素叫元素,树中将数据元素叫结点,在图中数据元素称之为顶点(Vertex)。 ...原创 2020-02-22 18:08:57 · 419 阅读 · 0 评论 -
数据结构-队列12
队列12 像栈一样,队列也是一种线性表。它允许在表的一端插入数据,在另一端删除元素。插入元素的这一端称之为队尾。删除元素的这一端我们称之为队首。队列的结构如下图所示。 队列的特性: • 在队尾插入元素,在队首删除元素。 • FIFO(先进先出),就向排队取票一样,先到先拿票 队列的相关概念 (1)队头( fron...原创 2020-02-21 22:10:33 · 261 阅读 · 0 评论 -
数据结构-栈的应用之逆波兰计算器的实现11
栈的应用之逆波兰计算器的实现 1.先看看逆波兰表达式是个什么东西 2.用代码实现: 至于TyStack可以查看 void main() { TyStack<double> m_stack; char str[10] = { 0 };//主要用来缓存输入的数字 printf("请输入逆波兰表达式(#:结束),以空格代表每个数字的分割\n"); char c = ' '; s...原创 2020-02-21 13:30:06 · 153 阅读 · 0 评论 -
数据结构-栈10
栈 一、栈(stack) 1、栈的特点 栈(Stack)是一种线性存储结构,它具有如下特点: 【注意】: (1)栈中的数据元素遵守”先进后出”(First In Last Out)的原则,简称FILO结构。 (2)限定只能在栈顶进行插入和删除操作。 栈在计算机中应用相当广泛,包括递归的调用和返回、二叉树和森林的遍历、调用子程序及从子程序返回、表达式的转换和求值、CPU的中断处理等等。 2、栈的相关...原创 2020-02-19 21:18:57 · 562 阅读 · 0 评论 -
数据结构-线性表09
线性表 一、 定义 线性表是一种线性结构,它是由零个或多个数据元素构成的有限序列。线性表的特征是在一个序列中,除了头尾元素,每个元素都有且只有一个直接前驱,有且只有一个直接后继,而序列头元素没有直接前驱,序列尾元素没有直接后继。 线性表的两种表示形式: 顺序表示(其实就是数组) 链表表示 二、 顺序...原创 2020-02-19 19:07:24 · 126 阅读 · 0 评论 -
数据结构-单链表的各种操作08
单链表的创建、增加、删除、倒转 //链表 typedef struct Node { int data; struct Node *next; }TyLIST; //1.创建链表 TyLIST *CreateList() { TyLIST *m_pHead = (TyLIST *)malloc(sizeof(TyLIST)); m_pHead->data = 0; m_pHea...原创 2020-02-19 14:54:59 · 224 阅读 · 0 评论 -
数据结构-哈夫曼树用代码实现07
哈夫曼树用代码实现 请看代码: 例子用的上一节,请自行对比 #include<iostream> #include<deque> #include<vector> #include<algorithm> using namespace std; typedef struct _HuffumanTree { int weight;//权值 _Hu...原创 2020-02-17 18:46:57 · 520 阅读 · 0 评论 -
数据结构-哈夫曼树的构造和哈夫曼编码06
哈夫曼树的构造和哈夫曼编码06 哈夫曼编码的代码实现对于初学数据结构的同学可能会有些困难,没有必要灰心,其实没啥,学习就犹如攀登一座又一座的山峰,每当我们攻克一个难点后,回首来看,也不过如此嘛。我们要做的就是不断的去攀越学习上的山峰 不断的超越过去的自己。尤其是我们程序员,不进则退,中国最不缺的就是人,...原创 2020-02-17 13:39:25 · 774 阅读 · 0 评论 -
数据结构-非递归中序遍历二叉树04
非递归中序遍历二叉树 遍历思想: //找到最左边的节点 BiTNode * GetLeftLeaf(BiTNode *T, stack<BiTNode *> &m_stack) { if (!T) { return NULL; } while (T->lchild) { m_stack.push(T); T = T->lchild; } ...原创 2020-02-14 13:28:49 · 383 阅读 · 0 评论 -
数据结构-求叶子节点个数,树的高度,拷贝二叉树03
求叶子节点个数,树的高度,拷贝二叉树 /* 1 2 3 4 5 */ typedef struct BiTNode { int data; struct BiTNode *lchild, *rchild; //左孩子 右孩子 }BiTNode, *BiTree; void PreOrder(BiTNode *T) { if (T != NULL) { ...原创 2020-02-13 23:28:26 · 228 阅读 · 0 评论 -
数据结构-二叉树的访问02
二叉树的访问 本节主要以递归的方式访问树节点,分为先序,中序,后序 模拟树: /* 1 2 3 4 5 */ typedef struct BiTNode { int data; struct BiTNode *lchild, *rchild; //左孩子 右孩子 }BiTNode, *BiTree; void PreOrder(BiTNode *T) { ...原创 2020-02-13 17:41:56 · 260 阅读 · 0 评论 -
数据结构-树的基础知识01
树的基础知识 一、树 1、什么是树? 树(Tree)是n(n≧0)个结点的有限集。n=0时称为空树。在任意一颗非空树中:有且仅有一个特定的称为根的结点。当n>1时, 其余结点可分为m(m>0)个互不相交的有限集T1、T2、T3……、Tm,其中每个集合本身又是一棵树,并且称为根的子树。 2、树的基本概念看下面的图: 3、定义树的时候需要注意的两点: n>0时,根的节点是唯一的,不...转载 2020-02-13 12:31:10 · 266 阅读 · 0 评论