合并两个排序的链表

来源:互联网 发布:2015最新癌症数据统计 编辑:程序博客网 时间:2024/06/11 23:45

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

/*public class ListNode {    int val;    ListNode next = null;    ListNode(int val) {        this.val = val;    }}*/public class Solution {    public ListNode Merge(ListNode list1,ListNode list2) {        if(list1 == null){            return list2;        }else if(list2 == null){            return list1;        }else{            ListNode temp1 = new ListNode(0);//生成表头节点,指向链表,便于前后指针指向链表            temp1.next = list1;        ListNode temp2 = list1;                        ListNode temp3 = null;                       //将list2插入list1中        while(list2!=null){            temp3 = list2;//保存当前操作的list2节点                list2 = list2.next;                            while(temp2 != null){                if(temp2.val > temp3.val){                     temp1.next = temp3;                     temp3.next = temp2;                     temp1 = temp3;                     break;//找到插入点插入后,即退出当前list1循环                                  }else{                     temp1 = temp2;                     temp2 = temp2.next;                 }                               }                                if(temp2 == null){                    list2 = temp3;//由于list2 = list2.next,故需回退一个节点                    break;//temp2为空,则list2无需再循环查找插入点,应跳出当前list2循环                }                                     }                         if(list2!=null){                 temp1.next = list2;//当temp2为空时,表示list1已走到尽头,若此时list2还不为空,                    //则list2剩下的元素均比list1大,直接接入到temp1即可                                 }                        }        return list1;            }}

0 0
原创粉丝点击