码迷,mamicode.com
首页 > 编程语言 > 详细

【链表】合并两个排序的链表

时间:2016-09-17 11:54:43      阅读:298      评论:0      收藏:0      [点我收藏+]

标签:

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

 1 /*
 2 public class ListNode {
 3     int val;
 4     ListNode next = null;
 5 
 6     ListNode(int val) {
 7         this.val = val;
 8     }
 9 }*/
10 public class Solution {
11     public ListNode Merge(ListNode list1,ListNode list2) {
12 
13         if (null == list1 && null == list2) {
14             return null;
15         }
16 
17         if (null == list1 && null != list2) {
18             return list2;
19         }
20 
21         if (null == list2 && null != list1) {
22             return list1;
23         }
24 
25         ListNode head = null; // 合并后的头节点
26 
27         ListNode p1 = null; // 遍历list1的指针
28         ListNode p2 = null; // 遍历list2的指针
29         ListNode p = null; // 指向当前合并后的链表的尾节点
30 
31         // 确定头节点
32         if (list1.val < list2.val) {
33             head = list1;
34             p1 = list1.next;
35             p2 = list2;
36         } else {
37             head = list2;
38             p1 = list1;
39             p2 = list2.next;
40         }
41         
42         p = head;
43 
44         // 遍历和比较list1和list2,将较小值加入新的链表
45         while (null != p1 && null != p2) {
46             if (p1.val > p2.val) {
47                 p.next = p2;
48                 p2 = p2.next;
49             } else {
50                 p.next = p1;
51                 p1 = p1.next;
52             }
53             p = p.next;
54         }
55 
56         // 其中一个链表遍历完毕,直接将另一个链表添加到新链表尾
57         if (null == p1) {
58             p.next = p2;
59         }
60 
61         if (null == p2) {
62             p.next = p1;
63         }
64 
65         return head;
66     
67     }
68 }

 

【链表】合并两个排序的链表

标签:

原文地址:http://www.cnblogs.com/jiangyi-uestc/p/5878191.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!