问题描述:
删除链表中等于给定值 val 的所有节点。
示例:
输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5
基本思路:
- 这个无非就是删除链表节点,之前讲的博文恐怕有误,这里提一下删除节点的两种情况:①遇到符合要求的节点,删除——这时候我们需要该节点的前继节点才能删除。②其余情况,如删除第i个节点——不需要前继节点,这种情况自行判断。
- 关于NULL:被这个坑了好多回了。。这次来写写:坚守两个原则:①碰到next的时候想想有没有处理考虑空节点。②while循环的时候,是不是在判断p,然后处理p->next?(这个是很严重的错误)——解决方法就是把p->next相关的内容放到最后处理。
- 本题的思路:就是先找头结点,然后再处理剩下的节点。
AC代码:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* }