首页 > 代码库 > 【链表】合并两个排序的链表
【链表】合并两个排序的链表
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
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 }
【链表】合并两个排序的链表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。