剑指 Offer 18. 删除链表的节点
题目:
思路:
将下一个节点的值和next给予此节点,就相当于把这个节点删除掉,不要忘记考虑边界
代码:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode deleteNode(ListNode head, int val) {
ListNode next = head;
ListNode pre = null;;
while (true) {
if (!(next != null & next.val != val)) break;
pre = next;
next = next.next;;
}
// 对最后一个节点特殊处理
if(next.next==null){
pre.next = null;
return head;
}
next.val = next.next.val;
next.next = next.next.next;
return head;
}
}