题目描述:
LeetCode203:移除链表元素
要求:删除链表中等于给定值 val 的所有节点。
示例:
输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5
解法:
官方代码:
一共15行代码,在堆上申请了一块内存,在栈区创建了5个指针
我的代码:
11行代码,只有两个指针
总结:代码行数少,变量少
思路:
相比于官方的哨兵解法,我没设置哨兵节点,而是利用C++的二级指针,把形参head抽象成一个节点。这种方法页不需要专门判断一次头head是否为NULL.
now为当前访问节点,last为当前while循环访问的节点的后一个节点的next指针域。每次判断,如果当前节点要删除,则让当前节点前移,再让last删除当前节点,last指向的指针的值不变。如果不需要删除,则让now前移,last跟着前移。