首页 > 代码库 > 【链表】合并两个排序的链表

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

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

 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 }

 

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