
数据结构
文章平均质量分 83
tpoog
本科在读,c++希望可以成为大佬
展开
-
堆排序(HeapSort)详解
堆排序需要多多的去画图理解,加深印象,堆的内容也是完成了,下一节我们要进入二叉树的链式结构了。原创 2023-10-24 11:54:13 · 208 阅读 · 20 评论 -
数据结构堆详解
我们已经把堆的基本框架学完了,下一节我们就要学习堆排序的内容。还是一样,反复练习百炼成钢。原创 2023-10-23 19:33:45 · 359 阅读 · 13 评论 -
初识树结构和二叉树
树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。注意:树形结构中,子树之间不能有交集,否则就不是树形结构.例如:这个就不是一个树。原创 2023-10-21 17:18:35 · 345 阅读 · 14 评论 -
栈和队列1——栈的实现及其oj(括号匹配问题)
就比如我们在一个细管子中放入石头,那么最开始放的石头在最底下,最后放的石头就在管口,把石头倒出来,那最先出来的石头就是管口的。原创 2023-09-23 20:26:51 · 279 阅读 · 3 评论 -
链表oj3(Leetcode)——相交链表;环形链表
看到这个我们首先想到的就是一个一个比较他们的值有相等的就是交点,但是如果a1和b2的值就相等呢?所以这个思路不行,第二种就是依次比较链表,但是这个方法也不行,因为两个链表长度不行不能这样比较。所以根据第二种的思路,我们可以。主要思路就是,因为是环形链表他会一直的向前走,所以快指针循环到一定的程度他就一定会和慢的那个指针相遇。然后我们就可直到从头开始走到入口,和从快慢指针相遇的地方开始走,那么他们相遇的位置就是入口。这个题目我们可以用我们之前写过的一道oj题来解,那就是快慢指针。我们先来进行数学分析。原创 2023-09-22 20:42:55 · 337 阅读 · 3 评论 -
链表oj题2(Leetcode)(牛客)——合并两个有序链表;判断回文链表;链表分割
所以我们在这里给这两个链表创建一个哨兵位,这样即使链表为空也可以正常的进行链接。这里合并两个链表,我们首先想到的思路就是构建一个新的链表,然后比较两个链表的val值的大小依次插入新链表,这里我们还需要注意几个细节。链表oj题目还有几道题目,每一道题目我们都到细细的钻研,把细节的部分都标上注释,方便以后复习的时候看。我们可以线取到中间的节点,然后把中间之后的链表反转,之后,把前面链表和后面的链表进行比较,即可得出。这个图就是我们的思路的整合,这里还要注意一下,我们在最后要把哨兵位都去掉。原创 2023-09-21 18:21:39 · 654 阅读 · 17 评论 -
链表oj题1(Leetcode)——移除链表元素,反转链表,链表的中间节点,
这里的删除要分成两种情况来考虑,因为这个题目给了我们头节点,所以分成头删和非头删。因为要记录下一个节点的位置,所以1我们这里选择新增两个指针方便记录。这里要让我们找到中间的节点,我们从题目出发,有个非常巧妙的写法就是快慢指针,我们定义两个指针,慢指针正常一次走一步,而快指针一次走两步,那么当快指针走到结束的时候慢指针就在中间位置了。我们假设k是3,那么我们定义fast,和slow两个指针,第一让fast先走k下,然后两个指针一起走,那么当fast走到NULL,slow所在的位置就是倒数第k个位置。原创 2023-09-19 19:39:47 · 552 阅读 · 16 评论 -
双向链表的实现(增删查改)——最好理解的链表
双向链表虽然是单链表之后的内容,但是我们会发现因为有两个指针的原因他的所有的操作比单链表比起来更加的方便,更易于理解。总之,还是要自己上手操作才能加深自己的印象。数据结构重点就是:画图!!画图!!画图!!原创 2023-09-17 20:37:35 · 700 阅读 · 11 评论 -
顺序表的实现(增删查改)
顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。初入数据结构,我们要先适应大的代码书写,还要对细节进行把握,希望这篇文章对你有帮助!!!原创 2023-09-14 20:45:58 · 312 阅读 · 13 评论