算法学习笔记:链表(下),如何写链表代码
- 理解指针或引用的含义
将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指针,或者反过来说,指针中存储了这个变量的内存地址,指向了这个变量,通过指针就能找到这个变量。
- 警惕指针丢失和内存泄漏
- 插入节点时,一定要注意操作的顺序
- 删除链表节点时,也一定要记得手动释放内存空间
- 利用哨兵简化实现难度
哨兵节点:在任何时候,不管链表是不是空,head指针都会一直指向这个哨兵节点。我们也把这种有哨兵节点的链表叫带头链表,相反,没有哨兵节点的链表就叫做不带头链表。
增加哨兵节点,在插入第一个节点和插入其他节点,删除最后一个节点和删除其他节点,都可以用相同的代码逻辑实现了。
实际上,很多代码实现都会用到哨兵,如:插入排序,归并排序,动态规划等。
- 重点留意边界条件处理
可以用以下几个条件来检查边界:
- 如果链表为空时,代码是否能正常工作?
- 如果链表只包含一个节点时,代码是否能正常工作?
- 如果链表只包含两个节点时,代码是否能正常工作?
- 代码逻辑在处理头节点和尾节点的时候,是否能正常工作?
多注意边界情况,代码才足够健壮。
- 举例画图,辅助思考
脑容量不够的时候,就用举例发和画图法。
- 多写多练,没有捷径
把常见的链表操作都自己多写几遍,出问题就一点一点调试,熟能生巧。
最后,建议思考时间不要太长,要先用自己能够想到的暴力方法实现试试,如果实在想不到,就在网上搜索答案,有的算法一般不是生想就能想到的,例如链表中环的检测。
以上是 算法学习笔记:链表(下),如何写链表代码 的全部内容, 来源链接: utcz.com/z/515385.html