合并两个有序的单链表

来源:互联网 发布:月影传说mac版 编辑:程序博客网 时间:2024/05/22 11:41
public Node merge(Node head1 , Node head2){if(head1 == null || head2 == null){return head1 != null ? head1 : head2 ;}Node head = head1.value < head2.value ? head1 : head2 ; //确定合并的头结点Node cur1 = head == head1 ? head1 : head2 ; //cur1引用的是合并头结点所在的链表Node cur2 = head == head1 ? head2 : head1 ; //cur2引用,另一个链表的结点Node pre = null ; // pre 指向合并链表进行中的尾部,即最新加入的结点,上次比较时值较小的结点Node next = null ;while(cur1 != null && cur2 != null){if(cur1.value <= cur2.value){pre = cur1 ;//直接移动下一个节点cur1 = cur1.next ;}else{next  = cur2.next ; //临时结点pre.next = cur2 ; //将 cur2插入 到 pre 和 cur1之间,并更新 cur2 和 precur2.next = cur1 ;pre = cur2 ;cur2 = next ;}}//如果cur1空,则直接将cur2链表加入到pre后面,如果cur2空,则不需要调整pre.next = cur1 == null ? cur2 : cur1 ; return head ;} <pre name="code" class="java"> class Node{public int value ;public Node next ;public Node(int value){this.value = value ;}}


0 0