两个链表合并不加入新的链表空间
Posted 鹏鹏进阶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两个链表合并不加入新的链表空间相关的知识,希望对你有一定的参考价值。
class LNode { int value; LNode next; public LNode(int value, LNode next) { this.value = value; this.next = next; } } public class MergeTowList { public static void main(String[] args) { LNode A5 = new LNode(21, null); LNode A4 = new LNode(13, A5); LNode A3 = new LNode(10, A4); LNode A2 = new LNode(6, A3); LNode A1 = new LNode(3, A2); LNode B4 = new LNode(14, null); LNode B3 = new LNode(12, B4); LNode B2 = new LNode(6, B3); LNode B1 = new LNode(4, B2); LNode merge = mergeLinks(A1, B1); System.out.println(123123); while (merge != null) { if (merge.next != null) { System.out.print(merge.value + ","); } else { System.out.print(merge.value); } merge = merge.next; } } public static LNode mergeLinks(LNode head1,LNode head2){ if(head1==null){ return head2; } if(head2==null){ return head1; } LNode head; if(head1.value>head2.value){ head = head2; head2=head2.next; }else{ head = head1; head1=head1.next; } LNode current=head;//current指向新的链表的最后一个节点 while(head1!=null && head2!=null){ if(head1.value>head2.value){ current.next=head2; current=head2; head2=head2.next; }else{ current.next=head1; current = head1; head1=head1.next; } } if(head1!=null){//把listA的全部插入到current后面 current.next=head1; } if(head2!=null){ current.next=head2; } return head; } }
以上是关于两个链表合并不加入新的链表空间的主要内容,如果未能解决你的问题,请参考以下文章
合并两个有序的链表使新链表依然有序(不开辟新空间,在原链表上操作。 递归版本)
合并两个排序的链表使之依然有序(不开辟新空间在原链表上操作的非递归版本)