链表
文章平均质量分 62
三二一一二三
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
7.2.141. 环形链表
public://双指针//直接用结论一while (q!p=p->next;原创 2025-04-15 13:23:15 · 248 阅读 · 0 评论 -
7.142.环形链表II
这种逻辑要是没学过完全新手除非数学基础推的出来(现场推很花时间),这种经典结论还是记住比较好。在找相交节点的while里找到了就return。无环则在大while外return。判断链表是否有环应该是要掌握一个结论。关于如何判断单链表是否有环的结论。下面这篇是对所有结论的总结吧。一是判断链表是否有环,二是找到环的入口。如果q之前有定义过才可以这么写。while的循环结束条件是什么?原创 2025-01-03 03:11:57 · 302 阅读 · 0 评论 -
7.160.相交链表
pb)的条件会陷入死循环。先把while写完再回头看,回头排除这种情况。注意例如pa短pb长,pa到尾了换到pb,再到尾之后就pa就指向NULL了!而不是说再回到a链表。题目要求的是相交节点的指针。注意节点一样是指针指向的内存空间一样,而不是内存空间存的值一样。从示例里的文字说明里得知,相交链表中相交节点以后的节点都相同。可能长的包括了短的整条链表。双指针最后会在相交节点处相遇或同时指向NULL。相交节点即相交的起始节点,相交节点以后的节点都是一样的。相交节点以前的节点不同。的评论区的方法更好。原创 2025-01-02 19:09:24 · 320 阅读 · 0 评论 -
3.707.设计链表
目的是写一个类。完成这个类中的各个函数(包括初始化,以及其它调用的函数等等。private和public的区别_dhead和this->dhead的作用差不多,都是避免命名冲突new相当于用构造函数直接把数据域和指针域都处理好(见addhead函数)这两个部分可以不管。直接当条件替身指针就是专门用来遍历的指针。问题:一开始return语句写成问题在于index--在0处停下来,链表从0开始,故不会处理0节点。故这个while最后停在的是要get的节点前一个节点处。问题就是size容易忘。原创 2025-01-01 22:47:32 · 329 阅读 · 0 评论 -
6.19.删除链表的倒数第N个节点
实际上题目既然给了倒数第n个节点,那应该暗含n不会超过总长度N?因为也没说超过了怎么处理,或者是即使超过了处理也没区别?虚拟头结点看成第0位,最后的NULL看成第N+1位。区别在于条件有个fast!关键还是在判断步数。原创 2025-01-02 12:58:07 · 252 阅读 · 0 评论 -
5.24.两两交换链表节点
0指向2的步骤中,一开始就用上tmp。虽然对,但是不方便思路。有时得回想一下这个tmp是什么意思。所以说临时节点等到临时再用比较好。等号左边的next是指针方向。等号右边的next是节点。个人喜欢写点注释怕忘了。保持自己代码的可解释性。可以看到三个步骤三句代码有阶梯状的特征。原创 2025-01-02 11:46:25 · 165 阅读 · 0 评论 -
4.206.反转链表
p也就是答案中的cur,指向当前节点。q为pre,指向前一个节点。链表中我习惯用pq定义双指针。数组中我习惯用ij定义。原创 2025-01-02 11:11:48 · 159 阅读 · 0 评论 -
2.203.移除链表元素
因为此时虽然你想直接删掉那个节点,但此时p->next指向的是第三个节点(即要删除的节点的下一个节点)了。故要重新定义一个指针指向那个节点再去删除。一定要提前定义指针,才能起到保留的作用。一种是把虚拟头结点删了,一种没删。new中的构造函数的内容,注释里有写。直接用带头结点的方式比较快。原创 2025-01-01 21:17:58 · 249 阅读 · 0 评论
分享