链表(下):如何轻松写出正确的链表代码?
你必须极其努力,才能看起来毫不费力。这就是答案啦,无他唯手熟尔。接下来分享几个技巧,帮助我们在努力的路上披荆斩棘。
技巧一:理解指针或引用的含义
技巧二:警惕指针丢失和内存泄漏
- 插入结点时,一定要注意操作的顺序
- 删除链表结点时,也一定要记得手动释放内存空间
技巧三:利用哨兵简化实现难度
- head 指针都会一直指向这个哨兵结点
技巧四:重点留意边界条件处理
- 如果链表为空时,代码是否能正常工作?
- 如果链表只包含一个结点时,代码是否能正常工作?
- 如果链表只包含两个结点时,代码是否能正常工作?
- 代码逻辑在处理头结点和尾结点的时候,是否能正常工作?
技巧五:举例画图,辅助思考
技巧六:多写多练,没有捷径
数组篇练习题总结
1 实现一个支持动态扩容的数组
2 实现一个大小固定的有序数组,支持动态增删改操作
3 实现两个有序数组合并为一个有序数组
链表篇练习题总结
1 给一个单链表,判断是否是回文数
2 实现单链表、循环链表、双向链表,支持增删操作
3 实现单链表反转
4 实现两个有序的链表合并为一个有序链表
5 实现求链表的中间结点
6 链表中环的检测
7 删除链表倒数第 n 个结点