MergeTwoSortedList

合併兩個有序鏈表:

package leetcode;

import java.util.List;

public class MergeTwoSortedList {
public ListNode MergeTwoSortedList(ListNode l1,ListNode l2) {
// TODO Auto-generated constructor stub
ListNode helper=new ListNode(0); //l1,l2實際上是一個節點,帶有指針域
ListNode pre=helper; //pre指針指向helper結點,pre這裏就是一直指向上一個節點。
helper.next=l1;
//將l2中小於l1中結點的插入到l1中來;
while(l1!=null&&l2!=null){
if(l1.val>l2.val){
ListNode next=l2.next;//標明單鏈表l2的下一個結點;
l2.next=pre.next;
pre.next=l2; //將l2結點插入l1中
l2=next;//?
}
else{
l1=l1.next;
}
pre=pre.next;
}
if(l2!=null){
pre.next=l2;//將比l1中結點大的,未插入l1中的結點插入;
}
return helper.next;
}
public static void main(String[] args) {

}

}

//是有構造一個helper的虛指針的,一般來說改動到鏈表頭的題目就會構造虛表頭,l1和l2是第一個結點,不過後來會被改變,往後迭代

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章