![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 89
努力学习的小赵同志
这个作者很懒,什么都没留下…
展开
-
详解—数据结构—<常用排序>基本实现和代码分析
1. 元素集合越接近有序,直接插入排序算法的时间效率越高2. 时间复杂度:O(N^2)3. 空间复杂度:O(1),它是一种稳定的排序算法4. 稳定性:稳定。原创 2023-12-24 20:41:48 · 1321 阅读 · 0 评论 -
详解—[C++数据结构]—哈希 <哈希表&&哈希桶>
在C++98中,STL提供了底层为红黑树结构的一系列在查询时效率可达到Log2N,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好的查询是,进行很少的比较次数就能够将元素找到,因此在C++11中,STL又提供了4个unordered系列的关联式容器,这四个容器与红黑树结构的关联式容器使用方式基本类似,只是其底层结构不同,本文中只对进行介绍,unordered_multimap和unordered_multiset可自行查看文档介绍。原创 2023-12-08 10:23:53 · 1207 阅读 · 0 评论 -
详解—[C++数据结构]—红黑树
红黑树的节点,我们这里使用的是三叉链,方便对后面内容的操作首先,我们定义了一个枚举常量,来表示红黑树节点的颜色其次,定义节点,一个红黑树的节点包含原创 2023-12-04 20:41:37 · 1503 阅读 · 2 评论 -
详解—[C++ 数据结构]—AVL树
AVL树每个节点都会记录他的左右孩子和父节点并且每个节点记录一下自己的平衡因子用模板T存储他的数据{}// 该节点的左孩子// 该节点的右孩子// 该节点的双亲T _data;int _bf;// 该节点的平衡因子。原创 2023-11-29 18:47:54 · 1471 阅读 · 0 评论 -
[C++ 数据结构]—搜索二叉树 模拟实现
3.从记录的根节点开始,判断如果比当前节点的数据大,往右子树寻找,小,往左子树走,如果相等,直接返回false,找到位置cur为空,记录他的父节点,然后开始插入。找到之后,对将要删除的节点合照到节点的值进行交换,再将被交换的值的节点进行删除(交换到要删除的节点肯定是叶子节点(没有孩子)),在这里我们首先判断 当前节点是否根节点(因为根节点的父节点为空),否则,判断删除节点的右节点要连接在父节点的左边还是右边。,也是先判断是否为根节点,在判断删除节点的左节点要链接在父节点的左边还是右边。原创 2023-11-12 17:38:59 · 117 阅读 · 0 评论 -
数据结构—二叉树的模拟实现(c语言)
详解—数据结构《树和二叉树》-CSDN博客上一节课我们详解了树和二叉树,这一篇博客我来带领大家来模拟实现二叉树。原创 2023-11-12 16:47:11 · 475 阅读 · 0 评论 -
详解—数据结构《树和二叉树》
树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。有一个特殊的结点,称为根结点,根节点没有前驱结点除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1原创 2023-10-31 15:09:26 · 143 阅读 · 0 评论 -
带你深入理解“栈”(c语言 c++和stl Stack三个版本的模拟实现)
cpp版本的扩容使用的new,函数参数使用的&,可能有同学对指针使用不太熟悉,所以我们同意用&(引用)来实现,方便大家的理解,就不再详细的进行说明了,思路跟c语言实现的一样,只是c和cpp的语言差距有所不同。首先,进行判断,top栈顶等于capacity容量的时候,代表我们栈里的内存满了,这里我们需要扩容,用realloc对数组进行扩容,现在我进行的二倍扩容。当我们栈中的数据很少时,可能会浪费空间,而数据量很大的时候,栈有可能占不下大量的数据。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。原创 2023-10-27 14:12:34 · 251 阅读 · 2 评论 -
带你深度——了解《带头双向循环链表》(C实现)②
目录前言一.《带头双向循环链表》的实现 1.链表的结构 2.创建返回链表的结点 3.创建返回链表的头结点. 4.带头双向循环链表—尾插 5.带头双向循环链表—尾删 6.带头双向循环链表—头插 7.带头双向循环链表—头删 8.带头双向循环链表—查找 9.带头双向循环链表—在pos的前面进行插入 10.带头双向循环链表—删除pos位置的节点 11.带头双向循环链表—销毁完整代码结合上篇内容,今天带大家一起了解《带头双向循环链表》相比起单链表,它有了更多的选择和实现,会更加容易的存储查找内容原创 2022-12-05 20:46:42 · 287 阅读 · 1 评论 -
带你深度——了解《链表》(C实现)①
想一想为什么单链表的pos位置插入 为什么不在之前插入呢???由上表查看,单链表的优势是头插头删,但是单链表要是想像顺序表一样随机访问存储确实不行的下一期 ,我们在一起探讨了解 带头双向循环链表,是不是听名字就很炫酷呢!原创 2022-11-28 14:44:44 · 477 阅读 · 1 评论 -
带你更深入的了解《顺序表》(C实现)
一.✨顺序表的概念与结构一.✨顺序表的概念与结构🎈顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组 上完成数据的增删查改🎈顺序表一般可以分为:🎈静态顺序表只适用于确定知道需要存多少数据的场景。静态顺序表的定长数组导致N定大了,空间开多 了浪费,开少了不够用。所以现实中基本都是使用动态顺序表,根据需要动态的分配空间大小,所以下 面我们实现动态顺序表。1.🧨顺序表初始化🎈初始化就是把顺序表内容置空{}原创 2022-11-15 16:26:06 · 520 阅读 · 1 评论 -
带你深度领悟——时间复杂度_空间复杂度(大O渐进表示法)
数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的 集合。算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单 来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。二.✨算法效率算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率 被称作空间复杂度。原创 2022-11-10 10:21:35 · 162 阅读 · 0 评论