剑指 Offer 18. 删除链表的节点
2021-10-19 本文已影响0人
ttiga
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) {
// 假如头结点就是要删除的节点,直接返回下一个下一个节点
if(head.val == val){
return head.next;
}
// 初始化前驱指针和当前指针
ListNode pre = head;
ListNode cur = head.next;
// 当当前节点结点不为空却不是要输出的值时,遍历链表
while(cur != null && cur.val != val){
pre = cur;
cur = cur.next;
}
// 当遍历到要删除的值时
if(cur != null){
// 删除指定的节点
pre.next = cur.next;
}
// 返回头结点(整个链表)
return head;
}
}