数据结构
文章平均质量分 91
无
Russ_Leo
这个作者很懒,什么都没留下…
展开
-
探索二叉树的奥秘:全面解析遍历技巧与在线OJ挑战实战
二叉树的遍历:前序遍历、中序遍历、后序遍历、层序遍历,二叉树基础OJ题:单值二叉树、检查两颗树是否相同、对称二叉树、二叉树的前序遍历、二叉树的中序遍历、二叉树的后序遍历、另一颗树的子树。原创 2024-05-21 21:05:13 · 822 阅读 · 11 评论 -
深入解析:C语言中的八大经典排序算法全揭秘
插入排序(Insertion Sort)希尔排序(Shell Sort)选择排序(Selection Sort)堆排序(Heap Sort)冒泡排序(Bubble Sort)快速排序(Quick Sort)归并排序(Merge Sort)计数排序(Counting Sort)原创 2024-05-08 14:23:32 · 982 阅读 · 1 评论 -
堆的概念、堆的向下调整算法、堆的向上调整算法、堆的基本功能实现
小堆:将根结点最小的堆叫做小堆,也叫最小堆或小根堆。大堆:将根结点最大的堆叫做大堆,也叫最大堆或大根堆。原创 2024-04-21 21:30:10 · 946 阅读 · 1 评论 -
栈和队列-介绍与实现(超级!!!详解-C语言)
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表。原创 2024-04-19 08:34:21 · 1109 阅读 · 1 评论 -
链表详解(C语言实现)——带头双向循环链表
前面说到,链表的结构一共有八种:带头单向循环链表、带头单向非循环链表、带头双向循环链表、带头双向非循环链表、无头单向循环链表、无头单向非循环链表、无头双向循环链表、无头双向非循环链表。在这八种结构中,我们只挑两种来进行刨析,即无头单向非循环链表和带头双向循环链表。无头单向非循环链表:结构简单,一般不会用来存储数据。实际上更多是作为其他数据结构的子结构,如哈希桶、图的链接表等等。带头双向循环链表:结构最复杂,一般用在单独存储数据。实际中使用的链表数据结构都是带头双向循环链表。原创 2024-04-16 15:24:29 · 1656 阅读 · 0 评论 -
顺序表详解(C语言实现)
顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存 储。在数组上完成数据的增删查改。顺序表一般可以分为:1. 静态顺序表:使用定长数组存储元素。2. 动态顺序表:使用动态开辟的数组存储。首先,我们要创建一个顺序表类型,该顺序表类型包括了顺序表的起始位置、记录顺序表内已有元素个数的计数器(size),以及记录当前顺序表的容量的变量(capacity)。原创 2024-04-15 19:56:00 · 433 阅读 · 0 评论 -
环形链表问题(详解+OJ)
环形链表是一种特殊类型的链表数据结构,其最后一个节点的"下一个"指针指向链表中的某个节点,形成一个闭环。原创 2024-04-18 17:33:26 · 590 阅读 · 1 评论 -
链表详解(C语言实现)——无头单向非循环链表
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。实际中,链表的结构多种多样:通过以上的这些情况组合起来,就有八种链表结构。即带头单向循环链表、带头单向非循环链表、带头双向循环链表、带头双向非循环链表、无头单向循环链表、无头单向非循环链表、无头双向循环链表、无头双向非循环链表。原创 2024-04-16 11:08:13 · 735 阅读 · 1 评论 -
树、二叉树、满二叉树、完全二叉树(详解)
树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成的一个具有层次关系的集合。把它叫做“树”,是因为它看起来像一颗倒挂的树,也就是说它是根朝上,而叶朝下的。原创 2024-04-20 11:48:46 · 1103 阅读 · 0 评论 -
栈和队列OJ(面试高频题 - 看完包!!!拿捏)
当需要进行出栈操作时,将不为空的队列中的数据导入空队列,仅留下一个数据,这时将这个数据返回并且删除即可。当字符串遍历完后,检测栈是否为空,若为空,则字符串有效,若不为空,说明有前括号未匹配,字符串无效。注意:环形队列的队尾不能像常规队列中队尾一样指向最后一个数据,如果这样的话,我们将不能区别环形队列的状态是空还是满,因为此时队头和队尾都指向同一个位置。其中,压入操作总是把元素添加到非空队列的末尾,而弹出操作时,会先确保所有元素都在同一个队列内,并且按照栈的“后进先出”原则进行操作。设计你的循环队列实现。原创 2024-04-19 15:25:33 · 684 阅读 · 1 评论 -
链表 - OJ(超清晰思路+实现)
我们假设这两个链表的结点个数之差为count,我们可以让指向较长链表的指针先向后移动count步,然后指向长链表的指针和指向短链表的指针再同时向后移动,这样这两个指针最后会同时走到各自的链表结尾(NULL)。注:在寻找链表的最后一个结点的同时,我们便可以计算两个链表的长度,只不过这时我们只遍历到了最后一个结点,并没有遍历到NULL,所以统计的两个链表的结点个数都比链表实际长度少一,但这两个值相减后依然是这两个链表的结点个数差。这时返回该结点地址即可。新链表是通过拼接给定的两个链表的所有节点组成的。原创 2024-04-20 08:25:10 · 882 阅读 · 0 评论