数据结构系列
文章平均质量分 85
小明的c++笔记本
别高估自己的短期能力而低估长期努力
展开
-
【C++】哈希和unordered系列封装
unordered_map文档说明unordered_map是存储键值对的关联式容器,其允许通过keys快速的索引到与其对应的value。在unordered_map中,键值通常用于惟一地标识元素,而映射值是一个对象,其内容与此键关联。键和映射值的类型可能不同。在内部,unordered_map没有对按照任何特定的顺序排序, 为了能在常数范围内找到key所对应的value,unordered_map将相同哈希值的键值对放在相同的桶中。原创 2023-05-01 20:32:55 · 621 阅读 · 7 评论 -
【C++】模拟实现map和set
set是按照一定次序存储元素的容器在set中,元素的value也标识它(value就是key,类型为T),并且每个value必须是唯一的。set中的元素不能在容器中修改(元素总是const),但是可以从容器中插入或删除它们。在内部,set中的元素总是按照其内部比较对象(类型比较)所指示的特定严格弱排序准则进行 排序。set容器通过key访问单个元素的速度通常比unordered_set容器慢,但它们允许根据顺序对 子集进行直接迭代。5. set在底层是用二叉搜索树(红黑树)实现的。原创 2023-04-29 12:36:52 · 1001 阅读 · 9 评论 -
【数据结构】简单快速过一遍红黑树
红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。原创 2023-04-21 18:58:40 · 910 阅读 · 6 评论 -
二叉树搜索树 && AVL树
AVL树节点的定义:采用的是三叉链结构T data;// 该节点的左孩子 AVLTreeNode < T > * _right;// 该节点的右孩子 AVLTreeNode < T > * _parent;// 该节点的双亲 int _bf;原创 2023-04-04 13:16:46 · 743 阅读 · 5 评论 -
【数据结构】经典八大排序算法(万字大总结+动图)
下面是一些排序的实测数据结果(冒泡,非比较排序不在里面)单位ms一共是一百万个随机数可以看出仅仅一百万个数据插入排序和选择排序的速度是非常缓慢的。原创 2022-09-11 09:51:01 · 2846 阅读 · 94 评论 -
【数据结构】循环队列的实现
>✨给大家推荐一款很火爆的刷题、面试求职网站✨原创 2022-08-24 09:17:32 · 5212 阅读 · 82 评论 -
【二叉树】链式结构的一些操作实现
✨目录1.二叉树链式结构的实现从概念中可以看出,二叉树定义是递归式的,因此后序基本操作中基本都是按照该概念实现的二叉树的链式结构在代码中的定义2.二叉树的遍历。原创 2022-08-18 09:15:25 · 524 阅读 · 92 评论 -
【二叉树】数中的特殊结构->堆
满二叉树:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是 ,则它就是满二叉树。. 完全二叉树:完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。 要注意的是满二叉树是一种特殊的完全二叉树。关于性质三一道题目:答案:A解析:对任何一棵二叉树, 如果度为0其叶结点个数为n0 ........原创 2022-08-13 13:11:45 · 959 阅读 · 124 评论 -
【学完线性表不学栈和队列是真的可惜】栈和队列实质性操作
文章目录🔒栈区👉什么是栈🪐栈的接口函数👉栈的建立与初始化👉入栈与出栈👉获取栈顶元素👉获取栈的有效个数👉检测栈是否为空👉销毁栈🔒队列区👉什么是队列🪐队列的接口函数👉队列的建立和初始化👉入队列与出队列👉获取队列头部元素与队列尾部元素👉获取队列中有效元素个数👉检测队列是否为空👉销毁队列🎬功能动画演示区👉栈功能动画演示👉队列功能动画演示🔒源文件区👉栈实现的源文件👉队列实现的源文件🔑栈区👉什么是栈栈的概念及结构栈:一种特殊的线性表,其只.原创 2022-05-11 07:09:49 · 667 阅读 · 57 评论 -
【带你了解C++标准库为何在八大链表结构中选择了它】双向循环带头链表的实质性操作
文章目录🚀八大链表结构为何选择了它🚀初始化和打印🚀尾插和尾删🚀头插和头删🚀查找和插入🚀删除和销毁🚀小结✨链表功能动画演示✨逻辑实现text.c✨头文件List.h✨函数实现List.c🚀八大链表结构为何选择了它C++的STL库选择的最终链表结构为双向循环带头链表为什么选择了它呢,是因为它的结构更优,虽然形式看似复杂,但的它便利性相比其他链表好得多C++标准库中把list设计为带头节点的双向循环链表是很合理的,不信你往后看它的操作实现过程相比于单链表来说有多简单,当然你也.原创 2022-05-03 11:19:04 · 3502 阅读 · 64 评论 -
Quicksort快速排序
快速排序中心思想快速排序操作实现快速排序中心思想百度描述->快速排序算法通过多次比较和交换来实现排序,其排序流程如下 (1)首先设定一个分界值,通过该分界值将数组分成左右两部分。(2)将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于分界值,而右边部分中各元素都大于或等于分界值。(3)然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大.原创 2022-04-19 00:45:00 · 1049 阅读 · 24 评论 -
C语言——约瑟夫环问题(链表解决)
问题描述:编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3…这样依次报),数到 m 的 士兵会被杀死出列,之后的士兵再从 1 开始报数。直到最后剩下一士兵,求这个士兵的编号。#include<stdio.h>struct stu //先创建一个结构体{ int num; struct stu* next;};int main(){ struct stu stu1[13];//定义一个结构体数组 int i; for.原创 2022-03-20 17:13:41 · 2009 阅读 · 0 评论 -
【超详解加源代码和测试截图】顺序表的一系列操作合集
1.前言2.动态顺序表建立和初始化3.检查容量和扩容4.尾插和头插.......原创 2022-04-21 22:03:50 · 1300 阅读 · 37 评论 -
【详细图解加源代码和测试截图】单链表的一系列操作合集
面试,笔试,刷题必备的单链表基本操作,内容涉及二级指针传参,每IT人都少不了经历,进来瞅瞅后请各位自行细品!原创 2022-04-26 07:30:00 · 1848 阅读 · 33 评论