本人使用的方法是递归的方式写的,代码如下
package 链表学习;
//两个有序列表的合并
public class merge {
public static ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if (l1 == null) return l2;
if (l2 == null) return l1;
ListNode head = null;
if (l1.val <= l2.val){
head = l1;
head.next = mergeTwoLists(l1.next, l2);
} else {
head = l2;
head.next = mergeTwoLists(l1, l2.next);
}
return head;
}
public static void main(String[] args) {
ListNode list1=new ListNode(1);
list1.next=new ListNode(3);
list1.next.next=new ListNode(5);
ListNode list2=new ListNode(2);
list2.next=new ListNode(4);
list2.next.next=new ListNode(6);
ListNode node=mergeTwoLists(list1,list2);
while(true) {
if(node.next==null) {
break;
}
else {
System.out.print(node);
}
node=node.next;
}
}
}
class ListNode{
int val;
ListNode next=null;
public ListNode(int val) {
super();
this.val=val;
}
@Override
public String toString() {
return val +"->";
}
}