151.Remove Linked List Elements(删除链表元素)

题目:

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

从具有值val的整数的链接列表中删除所有元素。

Example:

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

解答:

 1 /**
 2  * Definition for singly-linked list.
 3  * public class ListNode {
 4  *     int val;
 5  *     ListNode next;
 6  *     ListNode(int x) { val = x; }
 7  * }
 8  */
 9 class Solution {
10     public ListNode removeElements(ListNode head, int val) {
11         ListNode dummyHead=new ListNode(-1);
12         dummyHead.next=head;
13         ListNode curNode=dummyHead;
14         
15         while(curNode.next!=null){
16             if(curNode.next.val==val) curNode.next=curNode.next.next;
17             else curNode=curNode.next;
18         }
19         
20         return dummyHead.next;
21     }
22 }

详解:

设置虚拟头结点dummyHead,dummyHead.next=head,然后当前结点从dummyHead开始,当前结点的下一个结点不为空进行循环。

要删除的是当前结点的下一个结点,所以就把当前结点的next指向下一个结点的下一个结点即可。

最后返回的是头结点,即dummyHead的next

猜你喜欢

转载自www.cnblogs.com/chanaichao/p/9613878.html