07 | 链表(下):如何轻松写出正确的链表代码?
该思维导图由 AI 生成,仅供参考
技巧一:理解指针或引用的含义
- 深入了解
- 翻译
- 解释
- 总结
写链表代码的六个技巧 这篇文章分享了写链表代码的六个技巧,帮助读者更轻松地理解和编写链表代码。首先,强调了理解指针或引用的含义的重要性,指出指针实际上是存储所指对象的内存地址,通过指针可以找到相应的变量或对象。其次,提醒读者要警惕指针丢失和内存泄漏的问题,特别是在链表操作中,需要注意操作的顺序,避免出现指针丢失和内存泄漏的情况。技巧三介绍了利用哨兵简化实现难度,通过引入哨兵结点,统一了链表的插入和删除操作的代码实现逻辑。技巧四强调了重点留意边界条件处理,指出在编写链表代码时,需要特别注意边界条件下代码的正确性。技巧五提到了举例画图,辅助思考,建议读者在处理复杂的链表操作时,可以通过举例和画图的方式释放脑容量,更清晰地思考问题。最后,技巧六强调了多写多练,没有捷径,建议读者多练习常见的链表操作,熟能生巧。文章内容丰富,涵盖了链表操作的多个方面,为读者提供了全面的学习指导。
《数据结构与算法之美》,新⼈⾸单¥68
全部留言(598)
- 最新
- 精选
- zeta置顶建议大家在实现之前的思考时间不要太长。一是先用自己能想到的暴力方法实现试试。另外就是在一定时间内(比如半个到一个小时)实在想不到就要在网上搜搜答案。有的算法,比如链表中环的检测,的最优解法还是挺巧妙的,一般来说不是生想就能想到的
作者回复: 👍,高手!实际上,写链表代码还是主要为了锻炼写代码的能力,倒不是思考解决办法。像环的检测这种解决办法我也想不出来,都是看了答案之后恍然大悟。
2018-10-0620847 - 0xFFFFFFFF练习题LeetCode对应编号:206,141,21,19,876。大家可以去练习,另外建议作者兄每章直接给出LC的题目编号或链接方便大家练习。
作者回复: 我可以集中写一篇练习题的。现在这种思考题的方式是早就定好的了。不好改了。
2018-10-06521021 - 五岳寻仙老师您好!请教您一个问题。在学习了数组和链表之后,想知道在现实应用中有没有将二者结合起来的情况。 比如,我想用数组存储数据,但数组大小提前无法知道,如果使用动态数组的话,中间涉及到数组拷贝;如果使用链表的话,每增加一个元素都要malloc一次(频繁的malloc会不会影响效率并且导致内存碎片?)。 可不可以用链表将数组链接起来?也就是说链表里每个node存储了数组指针,这样每增加一个节点就可以多存放很多元素。如果可以的话,与直接使用动态数组或者直接使用链表比有没有什么优缺点,为何在网上搜索几乎找不到人这样用?
作者回复: 👍 思考的深入 你说的这个很像内存池 你可以百度一下看看是不是你想要的
2018-10-072396 - 小喵喵学习了好几节数据结构和算法了,我是也CRUD业务代码的,感觉还是用不着啊?
作者回复: 1. 建议再看下“为什么要学习数据结构和算法”那节课,包括里面的留言,有很多留言都写的很好,很多人都对这门课有比较清晰深刻的认识。 2. 你的疑问应该是:局限于你现在的工作,你觉得用不上对吧。这个是很有可能的。如果你做的项目都是很小的项目,也没有什么性能压力,平时自己也不去思考非功能性的需求,只是完成业务代码就ok了,那确实感觉用不到。但这是你个人的原因,并不代表就真用不到呢,兄弟! 3. 专栏里有很多贴近开发的内容,比如链表这一节,我就讲了LRU算法。数组这一节,我讲了容器和数组的选择。复杂度这一节,我讲了如何预判代码的性能。这些都是很贴合开发的。 4. 我尽量将内容贴近实际的开发,但并不代表一定贴近你的CRUD开发。知识如何用到你的项目中,需要你自己根据我的文章举一反三的思考。
2018-10-05771 - 王振华 程序员但是,如果我们要删除链表中的最后一个结点,前面的删除代码就不work了。 ``` if (head->next == null) { head = null } ``` 这里的head表示的是最后一个结点吗? “对于带头链表,插入头结点和插入其它节点,可以统一为相同的逻辑。”这我可以理解 但即使是带头链表,删除尾结点和删除其它节点,还是不能统一代码呀。 `p->next = p->next->next;` 无论是否是带头链表,对尾结点都没有影响呀。这行代码还是不能用于尾结点的删除呀?
作者回复: 你理解错我的意思了。我说的最后一个结点的意思是:链表中只剩下一个结点。并不是指尾结点。
2018-10-061630 - 鲫鱼快哭了,跨专业学习,就自学了一点python。都不知道要怎么去理解了😭 但是还是能理解一点的,慢慢坑了
作者回复: 买本大话数据结构或者算法图解结合着看吧 这门课本身就比较难学 只能多花点时间了呢
2018-10-0929 - gogoc语言不熟悉 看起来有点吃力
作者回复: 不好意思 我尽量写简单点 多加点注释
2018-10-0523 - 江谢木花了一个周末学链表,还是没学会写,是不是可以放弃了?
作者回复: 看我后面有一篇加餐文章:羁绊你前行的不是肆虐的狂风 而是你内心的迷茫
2019-09-30821 - hope看完了,打卡,稍后手写作业,去GitHub上看了下 ,希望老师把c的代码也添加上,谢谢
作者回复: 要不你写下 提个pull request?
2018-10-0520 - 广进作为一个小白,每节课都有看不懂的,这次又来了,那个代码二,从while往下就不懂了,怎么感觉和一的功能不一样了。求指导。 还有您都觉得二可读性差了,加点注释照顾照顾我们这些小白呀。😭
作者回复: 不好意思 我以后多加点注释 不过两段代码的功能是一样的
2018-10-0529