剑指offer_链表---合并两个排好序的链表

来源:互联网 发布:天人网络电视安卓版 编辑:程序博客网 时间:2024/06/05 14:49

题目描述

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

解题思路

1,如果list1和list2都不为空,那么比较大小插入新链表
2,其中一个为空以后,把剩下的一个直接挂到已排序列表后边

代码实现

/** *  */package 链表;/** * <p> * Title:Merge * </p> * <p> * Description: * </p> *  * @author 田茂林 * @data 2017年8月22日 下午3:20:21 */public class Merge {    public ListNode NodeMerge(ListNode list1, ListNode list2) {        if (list1 == null && list2 == null) {            return null;        }        if (list1 == null) {            return list2;        }        if (list2 == null) {            return list1;        }        ListNode list3 = new ListNode(-1);        ListNode cur = list3;        ListNode p = list1;        ListNode q = list2;        while (p != null && q != null) {            if (p.val <= q.val) {                cur.next = p;                cur = cur.next;                p = p.next;            } else {                cur.next = q;                cur = cur.next;                q = q.next;            }        }        if (p == null) {            cur.next = q;        }        if (q == null) {            cur.next = p;        }        return list3.next;    }}
原创粉丝点击