您的位置:首页 > 其它

merge two sorted linked list with duplicates

2012-08-28 23:16 411 查看
Question:

Given two sorted linked list, and merge them without using extra space (using constant space is allowed). For example, if 1 -> 2 -> 5 merges with 2 -> 4 -> 5,  we have 1 ->  2 -> 4 -> 5

Analyze:

using four pointers: 

h1: point to the head of list 1

h2: point to the head of list 2;

small: the smaller head between h1 and h2;

prev: the last node in the "new" list;

public static Node mergeSortedListWithDuplicates(Node h1, Node h2) {
//one or both of the list(s) is (are) null
if(h1 == null) return h2;
if(h2 == null ) return h1;
Node newHead = (h1.data <= h2.data) ? h1 : h2;

Node small = null;
Node prev = newHead;
//proceed to compare two heads and until one of them is null
while (h1 != null && h2 != null) {
if (h1.data <= h2.data) {
small = h1;
h1 = h1.next;
} else {
small = h2;
h2 = h2.next;
}

prev.next = small;
prev = small;
}

//deal with the remaining part of h1 or h2
if (h1 == null) prev.next = h2;
if (h2 == null) prev.next = h1;

return newHead;
}
http:blog.csdn.net/beiyeqingteng
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息