数据结构指南
文章平均质量分 84
数据结构学习笔记
lyyyyrics
lyrics
展开
-
深入了解二叉搜索树:原理、操作与应用
总的来说,二叉搜索树(BST)作为一种重要的数据结构,在计算机科学领域发挥着重要作用。通过其排序性质和高效的搜索、插入和删除操作,二叉搜索树成为了解决各种问题的有力工具。在本博客中,我们深入探讨了二叉搜索树的概念、性质和操作。我们了解到,二叉搜索树具有自平衡的能力,能够在平均情况下保持较低的时间复杂度。同时,我们也注意到了在极端情况下,二叉搜索树可能会退化为链表,导致操作的时间复杂度上升。因此,在实际应用中,需要考虑树的平衡性,以保证其性能。原创 2024-05-10 09:22:43 · 727 阅读 · 23 评论 -
AVL树的完全指南:平衡与性能
AVL树是一种自平衡的二叉搜索树,它的命名来源于其发明者 G. M. Adelson-Velsky 和 E. M. Landis。AVL树通过保持树的平衡性来提高搜索、插入和删除操作的效率。在AVL树中,每个节点都有一个平衡因子,它表示节点的左子树高度与右子树高度的差值。平衡因子可以是-1、0或1,如果任何节点的平衡因子的绝对值大于1,则该树就不平衡,需要进行平衡调整。AVL树本质也是一颗二叉查找树。原创 2024-05-13 20:42:27 · 902 阅读 · 26 评论 -
数据结构---栈和队列
/动态栈,如果是数组的话就是静态栈int top;}ST;}QNode;注意:为了方便找到队头和队尾,所以创建一个结构体指向队头和队尾}Queue;栈和队列相较于链表和顺序表来说,不是很难,只要,前面的顺序表和链表的操作掌握了,队列和栈基本都没啥问题。原创 2024-01-11 14:14:18 · 605 阅读 · 3 评论 -
数据结构---堆
我们要在这个大堆的最后插入一个数据,我们可以看出这个堆事一个大堆,当我们插入一个比3小的数据时,我们是不用调的,因为它满足大堆的要求(所有的孩子都比父亲小),当我们插入比3大的数据时,我们就应该把这个数据往上调,通过比较孩子和父亲的大小,然后交换两个数据从而达到了调整的方法,这种方法我们把它叫做向上调整算法。在插入数据时,必须先验证一下空间是否足够,如果空间不够,就要开辟新的空间。堆的底层用的是顺序表,所以堆的表示和顺序表是一样的。堆的销毁和顺序表的销毁一样。堆必须满足完全二叉树。堆的逻辑结构:二叉树。原创 2024-03-08 12:56:35 · 467 阅读 · 1 评论 -
数据结构---双向链表
单向链表:一块内存指向下一个内存。1.查找速度慢。2.不能从后往前找。3.找不到前驱。1.单向和双向2.带头和不带头带头的链表有一个带哨兵位的头结点,这个节点不存储有效数据。好处:尾插更方便,不需要二级指针了,带头结点不需要改变传过来的指针,,也就意味着不需要传二级指针3.循环和不循环不循环:尾是指向空的循环:尾是指针头的一、无头单向肺循环链表:结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构,如哈希桶、图的领接表等等。原创 2024-01-08 15:40:48 · 1250 阅读 · 2 评论 -
leetcode刷题---链表
思路:这里我们需要的6个变量,一个是小于k的链表的头EH,还有尾ET,一个是大于或等于k的头MH和尾MT,还有一个用于遍历链表的变量cur,还有一个变量就是记录cur的下一个位置的变量next,将除了cur以外的变量置为空,然后当遍历数组的时候访问每个节点的val,如果值小于k则用EH和ET连接,如果大于或者等于k的链表,则用MH和MT连接起来,最后将两个链表重新连接起来,最后返回头节点EH。题目分析:将小于k的值放在链表左边,将大于或者等于k的值放在链表右边。,接下来完善代码即可。原创 2024-03-31 20:30:17 · 459 阅读 · 7 评论 -
LeetCode刷题---链表
将已知链表存放在一个新的链表中,将已知链表的每一个节点头插进新的链表中,需要三个变量:一个变量存放新的链表的节点信息,一个变量存放下一个节点的信息,一个变量来存放当前位置的信息。由上图可知可以创建一个新的链表,然后依次把两个链表中小的数尾插进新的链表,准备两个节点,一个节点遍历新的链表,一个节点始终指向新链表的头结点,用两个链表依次比较来填充新的链表。所以我们就需要3个变量,一个节点存放指向其他节点的信息,另一个节点是被指向的节点,还需要一个节点来存放下一个节点的信息。给定链表头结点,找出链表中间节点。原创 2024-01-10 13:47:56 · 1252 阅读 · 0 评论 -
数据结构---单向链表
链表相较于顺序表来说难度有所上升,但是掌握链表基本概念,练习一些算法题还是很好掌握的。原创 2024-01-02 20:09:33 · 1070 阅读 · 6 评论 -
数据结构---二叉树
int data;...由于二叉树的孩子树不超过两个,所以可以直接存根的两个孩子的节点的指针。}BTNode;当然二叉树的知识远不止这些,二叉树相对于前面的栈队列还有链表和顺序表来说难度有较大的提升。原创 2024-01-19 13:06:14 · 900 阅读 · 1 评论 -
顺序表实现数据的增删查改
本文章主要讨论的是什么是线性表,线性表的种类,以及动态线性表和静态线性表的区别,还有用线性表如何实现数据的增删查改顺序表不是很难,勤加练习还是很容易掌握的。原创 2024-01-01 12:21:36 · 598 阅读 · 2 评论