数据结构
文章平均质量分 87
大唐不良猿
开始,继续
展开
-
第102篇 C++数据结构(十二)红黑树的删除
第102篇 C++数据结构(十二)红黑树的删除红黑树删除的结点孩子情况红黑树的删除代码实现红黑树删除被删除结点的情况红黑树删除的调整红黑树删除的代码实现红黑树删除总结红黑树删除的结点孩子情况红黑树的删除和普通的二叉搜索树的删除时一样的,都是存在三种情况:1.删除的结点没有孩子,这时这个结点可以直接删除2.删除的结点有一个孩子,则用孩子的数据来替换掉它的数据,像数组的删除用后面的数据把前面的数据覆盖掉一样,然后删除该结点3.删除的结点有两个孩子,这种情况可以转成(1),(2)情况,就是找前驱结点或者原创 2022-05-19 14:14:39 · 720 阅读 · 2 评论 -
第101篇 C++数据结构(十一)红黑树的插入
红黑树特性1.结点是黑色或红色2.根节点是黑色3.叶子结点是黑色的空结点4.任意节点到其每个叶子结点的所有路径都包含相同数目的黑色结点注:黑点都是2(或者算成1也行)。5.红色结点的父结点和子结点都是黑色结点红黑树特性推论1.如果一个结点只有一个孩子,那么该结点的颜色一定是黑色的,且该结点的孩子一定是红色的,如果其是红色或者其孩子是黑色,违反了第4条特性正确:错误:2.如果一个结点没有孩子,那么该结点可能是黑色,也可能是红色注:如果是红色结点的话,一定有父结点,是黑色结原创 2022-05-15 21:56:46 · 445 阅读 · 0 评论 -
第100篇 C++数据结构(十)AVL树的实现
文章目录1.链接2.AVL的树调整2.1.左旋2.2.右旋3.4.5.6.1.链接http://t.csdn.cn/ezulx//平衡二叉树AVL树的介绍网上有很多,这里就不作介绍了,这只说AVL的实现,看了80%的文章都在介绍和说明AVL树,似乎介绍实现的很少,所以尝试写写自己的见解,当然还是借鉴了上面那篇文章的实现。2.AVL的树调整AVL的调整主要包括对某棵子树(或整棵树)的左旋和右旋。这两个操作,是针对某两个点执行的,比如下面:对4和9两个结点进行左旋(逆时针旋转)2.1.左旋2.原创 2022-05-08 21:08:46 · 731 阅读 · 0 评论 -
第99篇 C++数据结构(九)散列表
第99篇 C++数据结构(九)散列表1.散列表简介1.1.散列函数1.2.散列冲突解决方案2.数据节点3.实现3.1.变量3.2.方法4.测试4.1.测试代码4.2.输出结果5.实现代码6.总结详细介绍:大佬文章链接1大佬文章链接21.散列表简介散列表也叫哈希表(Hash table),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。1.1.散列函数散列函原创 2022-05-02 12:28:35 · 2081 阅读 · 0 评论 -
第98篇 C++数据结构(八)图-边集数组实现
第98篇 C++数据结构(八)图-边集数组实现1.说明1.1.点1.2.边2.实现2.1.变量2.2.方法3.测试3.1.测试代码3.2.输出结果4.实现代码5.总结1.说明个人觉得边集数组实现图是中规中矩的方式,一个图有哪些点,有哪些边,都看得明白清楚,而且逻辑更加清晰,当然有缺点,就是访问比较麻烦,大佬的文章也有说明,在此不一一赘述了。1.1.点图里面有顶点,在此定义一个顶点结构体,当然可以换成类的方式,只有一个名称属性和两种构造方式。template <typename _Vertex原创 2022-05-02 10:50:50 · 337 阅读 · 0 评论 -
第97篇 C++数据结构(七)图-领接表实现
第97篇 C++数据结构(七)图-领接表实现1.结构2.实现2.1.变量2.2.方法3.测试3.1.测试代码3.2.输出结果4.实现代码5.总结图的详细介绍在上一篇大佬的链接处:1.结构实现一个领接表的图,设计的结构如下,照着这个结构,想要设计成什么样,自己改一改就行了。#define MAXVEX 100 //图中顶点数目的最大值type char VertexType; //顶点类型应由用户定义typedef int EdgeType; //边上的权值类型应由用户定义/*边表结点*/ty原创 2022-05-01 22:16:28 · 1667 阅读 · 0 评论 -
第96篇 C++数据结构(六)图-领接矩阵实现
第96篇 C++数据结构(六)图-领接矩阵实现1.图的简介1.1.大佬文章链接2.实现2.1.变量2.2.方法3.测试3.1.测试代码3.2.输出结果4.实现代码5.总结本篇只是简单的实现,具体图的介绍请看其他博文。1.图的简介图(Graph)是由顶点的有穷非空集合 V ( G ) V(G) V(G)和顶点之间边的集合 E ( G ) E(G) E(G)组成,通常表示为: G = ( V , E ) G=(V,E) G=(V,E),其中, G G G表示个图, V V V是图 G G G中顶点的集合,原创 2022-04-30 23:58:23 · 299 阅读 · 0 评论 -
第95篇 C++数据结构(五)树
第95篇 C++数据结构(五)树1.树的简介1.1.树的特点1.2.树的相关名词1.3.二叉树2.节点3.实现3.1.变量3.2.方法4.测试4.1.测试代码4.2.输出5.实现代码6.总结有许多介绍树的博文,这里不做过多的介绍,本文注重于二叉树的相关操作,且实现的相当于是一颗有序二叉树。1.树的简介树形结构是一种重要的非线性数据结构。其中树和二叉树最为常用,直观看来树是以分支关系定义的层次结构。树形结构是我们平时比较熟悉的,比如文件夹目录、公司组织关系等。在计算机领域也得到广泛的应用,编译程序就是以原创 2022-04-26 20:40:31 · 1674 阅读 · 0 评论 -
第94篇 C++数据结构(四)队列
第94篇 C++数据结构(四)队列1.队列简介1.队列的存储结构2.节点3.实现3.1.变量3.2.方法4.测试4.1.测试代码4.2.输出结果5.实现代码6.总结1.队列简介队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出(First In First Out)的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为队头。1.队列的存储结构(1)数组:队列的顺序实现是指分配一块连续的存储单元存放队列中的元素,并附设两个指针:队头指针 fro原创 2022-04-24 16:50:28 · 1457 阅读 · 0 评论 -
第93篇 C++数据结构(三)栈
第93篇 C++数据结构(三)栈1.栈的简介1.1.入栈1.2.出栈1.3.实现形式2.节点3.实现3.1.变量3.2.方法4.测试4.1.测试代码4.2.输出结果5.实现代码6.总结栈的详细介绍网上有很多博文,在此不多做说明。1.栈的简介栈(stack)又名堆栈,作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。栈具有先进后出的特性。1.1.入栈也称为压栈,往栈里面添原创 2022-04-24 16:14:36 · 1172 阅读 · 0 评论 -
第92篇 C++数据结构(二)链表
第92篇 数据结构(二)链表1.链表简介1.1.链表的分类1.2.链表的优点:1.3.链表的缺点:1.4.节点说明1.5.链表的定义与使用1.6.链表相关操作2.Node节点3.List类3.1.变量3.2.方法3.3.迭代器本篇主要是说明链表的简单封装,链表的具体介绍一搜一大把,这里就不一一说明,这里主要是链表相关操作的封装实现,代码不复杂,就不作算法介绍了。1.链表简介链表是一种通过指针串联在一起的线性结构,每一个节点是又两部分组成,一个是数据域一个是指针域(单向链表:存放指向下一个节点的指针,双原创 2022-04-22 18:40:34 · 1392 阅读 · 0 评论 -
第91篇 C++数据结构(一)数组
第91篇 数据结构(一)数组1.数组简介1.1.数组的优点:1.2.数组的缺点:1.3.数组的定义与使用1.3.1.一维数组1.3.2.二维数组1.4.数组相关操作2.Array类2.1.变量表2.2.方法表2.3.迭代器2.3.1.变量2.3.2.方法3.测试3.1.构造函数测试3.2.插入测试3.3.删除测试3.4.查找测试3.5.替换测试3.6.反转测试3.7.排序测试3.8.截取测试3.9.遍历测试3.10.连接测试3.11.迭代器测试4.实现代码5.测试代码6.总结1.数组简介数组是一个固定长原创 2022-04-21 11:08:07 · 1243 阅读 · 0 评论