题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
思路
创建单链表时,一般都会建一个伪头结点,也称哑结点(dummy node)。如此是为了所有节点都保证有前驱结点。
关于哑结点的使用:
可以引用一个cur指针指向dum,操作cur进行移动来完成所求链表的创建,最后返回dum.next即所求链表。
此题思路是使用双指针遍历两链表,根据大小关系确定节点添加顺序,两节点指针交替前进,直至遍历完毕。
代码
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
ListNode dum = new ListNode(-1);
ListNode cur = dum;
while(list1!=null && list2!=null){
if(list1.val <= list2.val){
cur.next = list1;
list1 = list1.next;
}
else{
cur.next = list2;
list2 = list2.next;
}
cur = cur.next;
}
if(list1!=null){
cur.next = list1;
}
else{
cur.next = list2;
}
return dum.next;
}
}