image.png
/**
* 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) {
// 假如頭結(jié)點(diǎn)就是要?jiǎng)h除的節(jié)點(diǎn),直接返回下一個(gè)下一個(gè)節(jié)點(diǎn)
if(head.val == val){
return head.next;
}
// 初始化前驅(qū)指針和當(dāng)前指針
ListNode pre = head;
ListNode cur = head.next;
// 當(dāng)當(dāng)前節(jié)點(diǎn)結(jié)點(diǎn)不為空卻不是要輸出的值時(shí),遍歷鏈表
while(cur != null && cur.val != val){
pre = cur;
cur = cur.next;
}
// 當(dāng)遍歷到要?jiǎng)h除的值時(shí)
if(cur != null){
// 刪除指定的節(jié)點(diǎn)
pre.next = cur.next;
}
// 返回頭結(jié)點(diǎn)(整個(gè)鏈表)
return head;
}
}