题目描述
Remove all elements from a linked list of integers that have value val.
Example
Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6
Return: 1 --> 2 --> 3 --> 4 --> 5
题目出处:https://leetcode.com/problems/remove-linked-list-elements/
解题思路
1 当为空链表时直接退出。
2 处理表头,将表头为val的节点删去。
3 处理每个节点的下一个节点,将值为val的节点删去。
代码
package com.larry.easy;
import com.larry.util.ListNode;
public class RemoveLinkedListElements {
public ListNode removeElements(ListNode head, int val) {
if(head == null) return null;//处理空链表
//处理首元素则为val的情况
while(head != null){
if(head.val == val) head = head.next;
else break;
}
if(head == null) return null;
else{//处理首元素不为val的情况
ListNode tempHead2 = head;
while(tempHead2.next != null){
if(tempHead2.next.val == val) tempHead2.next = tempHead2.next.next;
else tempHead2 =tempHead2.next;
}
return head;
}
}
public static void main(String[] args) {
ListNode node1 = new ListNode(1);
ListNode node2 = new ListNode(2);
ListNode node3 = new ListNode(3);
ListNode node4 = new ListNode(4);
ListNode node5 = new ListNode(5);
node1.next = node2;
node2.next = node3;
node3.next = node4;
node4.next = node5;
ListNode head = node1;
new RemoveLinkedListElements().removeElements(head, 5).print();
}
}<span style="color:#ff0000;">
</span>