LeetCode--LinkedList--203. Remove Linked List Elements(Easy)

203. Remove Linked List Elements(Easy)

题目地址https://leetcode.com/problems/remove-linked-list-elements/

Remove all elements from a linked list of integers that have value val.

Example:

Input:  1->2->6->3->4->5->6, val = 6
Output: 1->2->3->4->5

solution

题意是给定一个链表和一个目标值val,要求删除链表里面与val值相同的结点。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode removeElements(ListNode head, int val) {
        ListNode start = new ListNode(-1);  //构造一个额外的头结点
        ListNode p = start;
        start.next = head;
        while (p.next != null)
        {
            if (p.next.val == val)
                p.next = p.next.next; //p指针始终指向待删除结点的前一个结点
            else
                p = p.next;    
        }
        return start.next;
    }
}

解析:一般来说,只要涉及到链表的删除操作,构造一个额外的链表头能将题目简化不少。就本题来看,只要构造一个额外的链表头start,start.next指向head结点,然后构造一个p指针,p指针始终指向待删除结点的前一个结点,这样就统一了表头与表尾的删除操作。

Notes
1.链表删除得注意表头和表尾;

原文地址:https://www.cnblogs.com/victorxiao/p/11181312.html