算法学习----合并两个有序的链表

将两个非递减链表合成一个,并使得合成后的链表已然是有序(非递减)链表:

/*
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&&list2==null)return null;
        if(list1==null&&list2!=null)return list2;
        if(list1!=null&&list2==null)return list1;
        ListNode newlist = new ListNode(-1);//建立新的节点,只作为头结点使用
        ListNode temp = newlist;//创建新的临时节点
        while(list1!=null&&list2!=null){//判断循环条件两个链表节点是否为空
            if(list1.val<=list2.val){//list1的值大于等于list2,将list1当前节点连接到newlist上
                temp.next=list1;
                temp = temp.next;//临时节点后移到新加入到节点
                list1 = list1.next;//list1位置后移一个位置
            }
            else{//注释内容同上
                temp.next = list2;
                temp = temp.next;
                list2 = list2.next;
            }
        }
        if(list2!=null) temp.next=list2;//循环结束如果list2有空余节点,把list2连接到newlist的最后一个节点上,即temp节点
        if(list1!=null) temp.next=list1;//同上
        newlist = newlist.next;//由于初始化时新建了一个节点,故删除此节点
        return newlist;//返回新的节点newlist
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章