• 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.链表删除得注意表头和表尾;

  • 相关阅读:
    Grand Central Dispatch-thread pool pattern
    POSIX Threads
    Event-driven programming-main loop
    Data type-数据类型
    软件的动与静
    对封装好的视图进行动态修改
    编程语言进化
    Type system
    Run-time type information--RTTI
    Type system-Type checking
  • 原文地址:https://www.cnblogs.com/victorxiao/p/11181312.html
Copyright © 2020-2023  润新知