14【题目】输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
* 【思路】依次比较两个链表头指针,小者作为合并后的头指针,依次比较,使用递归。
1 package com.exe3.offer; 2 3 /** 4 * 14【题目】输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 5 * 【思路】依次比较两个链表头指针,小者作为合并后的头指针,依次比较,使用递归。 6 * @author WGS 7 * 8 */ 9 public class MergeLinkList { 10 public static class LinkNode{ 11 int val; 12 LinkNode next=null; 13 public LinkNode(){ 14 15 } 16 public LinkNode(int n){ 17 this.val=n; 18 } 19 } 20 public LinkNode getMergeLinkList(LinkNode headnode1,LinkNode headnode2){ 21 if(headnode1==null){ 22 return headnode2; 23 }else if(headnode2==null){ 24 return headnode1; 25 } 26 LinkNode headNodeOfMergeLinkList=null; 27 28 if(headnode1.val<headnode2.val){ 29 headNodeOfMergeLinkList=headnode1; 30 headNodeOfMergeLinkList.next=getMergeLinkList(headnode1.next,headnode2); 31 }else{ 32 headNodeOfMergeLinkList=headnode2; 33 headNodeOfMergeLinkList.next=getMergeLinkList(headnode1,headnode2.next); 34 } 35 36 37 38 39 return headNodeOfMergeLinkList; 40 41 42 } 43 public static void main(String[] args){ 44 LinkNode node11=new LinkNode(1); 45 LinkNode node12=new LinkNode(3); 46 LinkNode node13=new LinkNode(5); 47 LinkNode node14=new LinkNode(7); 48 node11.next=node12;node12.next=node13;node13.next=node14; 49 50 LinkNode node21=new LinkNode(); 51 LinkNode node22=new LinkNode(); 52 LinkNode node23=new LinkNode(); 53 LinkNode node24=new LinkNode(18); 54 node21.next=node22;node22.next=node23;node23.next=node24; 55 56 LinkNode node=new MergeLinkList().getMergeLinkList(node11, node21); 57 while(node!=null){ 58 System.out.println(node.val); 59 node=node.next; 60 } 61 } 62 63 64 65 66 67 68 69 70 71 }