【链表】203. 移除链表元素

【链表】203. 移除链表元素

解题思路

  • 删除链表元素
  • 设置哑结点 指向head节点
  • 然后设置前去指针 以及当前指针 前驱指针指向哑结点,当前指针指向后面一个节点
  • 遇到需要删除的节点之后,进行删除操作
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    
    
    public ListNode removeElements(ListNode head, int val) {
    
    

        // 创建哑结点  然后指向首元素的节点  然后设置当前指针指向哑结点
        ListNode dummyNode = new ListNode(0);
        dummyNode.next = head;
        ListNode pre = dummyNode;// pre在这里相当于前驱节点指针
        ListNode cur = head;
        

        // 循环遍历链表
        while(cur != null){
    
    
            if(cur.val == val){
    
    
                // 如果下一个元素是val  删除该元素
                pre.next = cur.next;
            }
            else{
    
    
                pre = cur;//  如果不是需要删除的元素  直接移动指针
            }

            cur = cur.next;
        }

        ListNode x = dummyNode.next;
        return x;


    }
}

猜你喜欢

转载自blog.csdn.net/qq_44653420/article/details/131649526