剑指offer:合并两个排序的链表
一、题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则
二、思路
1.先判断是否是特殊条件
1.1如果两个链表list1、list2都为空,则返回空
1.2如果list1为空则返回list2
1.3如果list2为空则返回list1
2.当两个链表都不为空的时候
将数值小的结点加入链表中
3.当其中一个链表已经遍历完时
直接将剩下的那个链表中的结点依次加入新链表中
三、代码
/* 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(null==list1) return list2; if(null==list2) return list1; ListNode node = new ListNode(-1); ListNode list = node; while(null!=list1&&null!=list2){ if(list1.val>list2.val){ list.next =list2; list = list.next; list2 = list2.next; }else{ list.next = list1; list = list.next; list1 = list1.next; } } while(null!=list1){ list.next = list1; list = list.next; list1 = list1.next; } while(null!=list2){ list.next = list2; list = list.next; list2 = list2.next; } return node.next; } }