剑指 Offer 18. 删除链表的节点
思路:需要保存上一个节点,当当前节点的值是需要删除的值,直接将上一个节点的next指针指向当前节点的下一个指针指向的节点。
定义一个cur 指向当前节点
pre 指向前一个节点
/**
* 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 pre = head;
ListNode cur = head;
if(head.val == val){ // 删除头节点
head = head.next;
return head ;
}
if(head.next != null ) cur = head.next;
while(cur != null ){
if(cur.val == val){
pre.next = cur.next; // 删除当前节点
return head ;
}
pre = pre.next;
cur = cur.next;
}
return head;
}
}