- 博客(8)
- 收藏
- 关注
原创 力扣刷题---225. 用队列实现栈
出栈实现:有两个队列 一个队列内有数据,当我们需要出数据的时候 只需要将有数据的队列内的数据导入另一个空的队列内(理解:if else 语句用来判断 哪个队列为空 如果 q1 为空 我们就将q2的数据导入q1中。myStackPop实现:判断空队列是哪个 我们需要导入数据 保留一个数据 这个数据就是pop数据。思路:入栈实现:我们只需要在不为空空的队列内入数据就行了(初始状态随便入一个空的队列就行了)注意不是全部导入 我们还需要留一个 这个最后一个数据就是我们要出的数据)if else 语句。
2025-06-06 17:10:02
428
原创 数据结构-堆的基本实现与理解
原因:因为堆是完全二叉树,有这个结论:如果知道父亲节点的下标,我们就能找到孩子节点(下标*2+1为左孩子,+2为右孩子)这就很好的符合了数组的下标特点。),如果直接删除的话,可能导致堆全部乱了(无法满足父亲节点的值大于等于孩子节点的值)==>这就有了。直接放在数组最后根本无法满足大堆的条件,所以就有了----------------除了最后一层没有满,其他层都满了(节点的度数为2)当我们要在堆中放入数据时,是直接放入数组的最后面(父亲节点的值大于等于孩子节点的值。由来:我们在堆中删除一个数(
2025-06-04 16:55:26
167
原创 数据结构-链表-寻找链表中间节点题目分析
要注意的是 当链表的长度为奇数或者偶数时,注意循环终止条件就行了(看图)当快指针走完链表,慢指针所指向的就是中间节点,返回slow就行了。快指针(fast)一下走两步,慢指针(slow)一下走一步。读者不用疑惑,仔细想想就行了。
2025-05-28 13:08:23
401
原创 数据结构-链表-随机链表的复制问题解析
思路:1.第一步 使用cur标记头节点 ,next 标记头节点的下一个(防止修改指针的指向时找不到)使用malloc来创建新的节点 之后cur 指针往后走 遍历链表链接就行了。n1指针指向头 copy指针指向下一个节点 创建copyhead,copytail为新的头和尾指针便于尾插。题目分析:如果只是普通链表的复制就很简单,只需要建立一个新链表,将原链表尾插在新链表上就行了,3.第3步 我们只需要将原链表与新的节点分开就行了(这是我们需要考虑新节点的random的指向(读者可以跟着这个思路仔细思考。
2025-05-27 17:22:36
362
原创 数据结构-栈-有效括号题目分析
我们只需要在最后判断栈是不是空就行了(因为如果栈没有空,就证明没有足够的右括号与左括号匹配(如果栈都是空的就证明连左括号都没有-------false)------false)(图中最后一串代码)判断栈是不是空就行了(因为在遍历过程中,匹配成功:遍历字符串完成,并且栈空。出栈前判断(防止出栈导致栈空)使用栈来解决(后进先出原则)右括号就出栈进行匹配。在遍历字符串过程中,
2025-05-25 23:05:11
185
原创 数据结构-环形链表-判断解析
所以这道题就非常简单了。因为不知道链表长度(奇数还是偶数),遍历循环终止条件应该就有。如果链表有环,一个慢指针走一步,快指针走两步,在环中一定会相遇。,判断链表中是否有环(力扣141)代码解析:首先肯定要遍历链表,知道。slow==fast(由结论知道)给你一个链表的头节点。
2025-05-25 13:37:40
166
原创 数据结构-链表-合并两个有序链表
代码解释:我们需要重新创建一个新的链表,比较两个链表值的大小,值小的尾插入新的带头的新链表中。这道题需要注意一些特殊的情况 比如L1或者L2为空链表,注意终止条件。注意当一个链表已经走到空了,只需要将另一个链表剩余的节点链接到尾部就行了。比较L1,L2值的大小,尾插在新头上,插入后指针往后移动就行了。需要head指针来定位头,tail来定位尾部便于尾插。解法:带头节点尾插法。重复以上操作就行了。
2025-05-24 14:43:13
190
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅