写链表代码的几个技巧
写链表算法的代码,基础是要熟悉我们常见的几种链表结构,然后注意下面几个写链表代码的技巧,再加上多多练习,就能很快速、高质量的写出链表代码。技巧如下:
1、充分理解指针或者引用的含义
将某个变量赋值给指针,实际上就是将这个变量的地址赋值给了指针,或者反过来说,指针中存储了这个变量的内存地址,指向了这个变量,通过指针就能找到这个变量。
以单链表插入为例,我们在插入新的节点的时候一定要先把新插入的节点和插入位置后面的节点先连接起来,然后再把新插入的节点和前面的节点连接起来,如果反过来操作,那么会丢失后面的节点指针。同理,删除也是要注意这个问题,先把删除节点后面的节点连接起来。
3、利用虚拟节点简化实现难度
针对链表的插入、删除操作,需要对插入第一个节点和删除最后一个节点的情况进行特殊处理,那么就需要虚拟节点来解决这个问题。
虚拟节点就是一个不参与业务逻辑、不存储业务数据的节点,一般用作链表的头结点,在任何时候,不管链表是不是空,head指针都会指向这个虚拟头节点。
4、着重留意边界条件处理
在编写代码的时候要注意边界条件的问题,有可能会产生bug,常用的检查链表代码的边界条件有下面这样几个:
1)如果链表为空时,代码是否能正常工作?
2)如果链表只包含一个节点时,代码是否能正常工作?
3)如果链表只包含两个节点时,代码是否能正常工作?
4)代码逻辑在处理头节点和尾节点的时候,是否能正常工作?
在代码写完考虑正常情况下能否工作外,还需要考虑上面4种情况下,代码是否能正常工作。
5、画图举例,辅助思考
对于链表的操作,指针的操作,总会让人感觉到很晕,那么我们就可以用举例法和画图法,把问题具象化,在纸上画出来,然后想怎么操作,这样会非常清晰
6、多写多练,没有捷径
一道题练到什么境界呢,就是提到这个题的时候,你就能想出来最关键的代码的部分,就可以了。
以上共勉!