您的位置:首页 > 其它

删除单链表指定元素

2016-06-13 21:40 369 查看
class ListNode {
int val;
ListNode next;

ListNode(int x) {
val = x;
}

ListNode(int x, ListNode next) {
val = x;
this.next = next;
}

}

public class Solution {

public ListNode removeElements(ListNode head, int val) {
if (head == null)
return null;
ListNode dummyHead = new ListNode(0);
ListNode tail = dummyHead;
while (head != null) {
if (head.val != val) {
tail.next = head;
tail = tail.next;
}
head = head.next;
}
tail.next = null;
return dummyHead.next;
}

public ListNode removeElements2(ListNode head, int val) {
if (head == null)
return null;
ListNode dummyHead = new ListNode(0);
dummyHead.next = head;
ListNode pre = dummyHead;

ListNode curr = head;
while (curr != null) {
if (curr.val == val) {
pre.next = curr.next;
} else {
pre = pre.next;
}
curr = curr.next;
}
return dummyHead.next;
}

public ListNode removeElements3(ListNode head, int val) {
if (head == null)
return null;
head.next = removeElements2(head.next, val);
return head.val == val ? head.next : head;
}

public ListNode removeElements4(ListNode head, int val) {
if (head == null)
return null;
ListNode newHead = new ListNode(0);
ListNode savedHead = newHead;
newHead.next = head;
while (newHead.next != null) {
if (newHead.next.val == val) {
newHead.next = newHead.next.next;
} else {
newHead = newHead.next;
}
}
return savedHead.next;
}

public static void print(ListNode head) {
while (head != null) {
System.out.print(head.val + " ");
head = head.next;
}
System.out.println();
}

public static void main(String[] args) {
ListNode _4 = new ListNode(3, null);
ListNode _3 = new ListNode(3, _4);
ListNode _2 = new ListNode(2, _3);
ListNode _1 = new ListNode(1, _2);
ListNode head = new ListNode(1, _1);
ListNode result = new Solution().removeElements(head, 1);
print(result);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息