打卡Day5
今天学习了第一阶段的链表(下):如何轻松写出正确的链表代码?
今日收获:几个写链表的代码技巧
技巧一:理解指针或引用的含义
对指针的理解:将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指针,或者反过来说,指针中存储了这个变量的内存地址,指向了这个变量,通过指针就能找到这个变量。
技巧二:警惕指针丢失和内存泄漏
技巧三:利用哨兵简化实现难度
1.什么是“哨兵”?
链表中的“哨兵”节点是解决边界问题的,不参与业务逻辑。如果我们引入“哨兵”节点,则不管链表是否为空,head指针都会指向这个“哨兵”节点。我们把这种有“哨兵”节点的链表称为带头链表,相反,没有“哨兵”节点的链表就称为不带头链表。
技巧四:重点留意边界条件处理
经常用来检查链表是否正确的边界4个边界条件:
1.如果链表为空时,代码是否能正常工作?
2.如果链表只包含一个节点时,代码是否能正常工作?
3.如果链表只包含两个节点时,代码是否能正常工作?
4.代码逻辑在处理头尾节点时是否能正常工作?
技巧五:举例画图,辅助思考
技巧六:多写多练,没有捷径
5 个常见的链表操
1.单链表反转
2.链表中环的检测
3.两个有序链表合并
4.删除链表倒数第n个节点
5.求链表的中间节点
以上5个链表操作,尽快自己写一遍,一遍不行,多写几遍,彻底掌握链表。
本文参考【极客时间】专栏《数据结构与算法之美》。
网友评论