剑指offer-面试题17-合并两个排序的链表

package case17_MergeListNode;

public class MergeListNode {
	/**
	 * 健壮性:
	 * 	输入两个链表,有一个为null?
	 * 	
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//构造链表A
		ListNode listNodeA1 = new ListNode(1);
		ListNode listNodeA2 = new ListNode(3);
		ListNode listNodeA3 = new ListNode(5);
		ListNode listNodeA4 = new ListNode(7);
		listNodeA1.next = listNodeA2;
		listNodeA2.next = listNodeA3;
		listNodeA3.next = listNodeA4;
		listNodeA4.next = null;
		//构造链表B
		ListNode listNodeB1 = new ListNode(2);
		ListNode listNodeB2 = new ListNode(4);
		ListNode listNodeB3 = new ListNode(9);
		ListNode listNodeB4 = new ListNode(9);
		listNodeB1.next = listNodeB2;
		listNodeB2.next = listNodeB3;
		listNodeB3.next = listNodeB4;
		listNodeB4.next = null;
		
		MergeListNode mln = new MergeListNode();
		ListNode newListNode = mln.MergeSotrListNode2(listNodeA1, listNodeB1);
		while (newListNode != null) {
			System.out.print(newListNode.val + " ");
			newListNode = newListNode.next;
		}
	}

	// 构造ListNode节点
	public static class ListNode {
		int val;
		public ListNode() {
		}

		public ListNode(int val) {
			this.val = val;
		}
		ListNode next;
	}

	// 采用递归的方式合并有序链表
	public ListNode MergeSotrListNode2(ListNode listNodeA, ListNode listNodeB) {
		ListNode newListNode = null;
		if (listNodeA == null)
			return listNodeB;
		if (listNodeB == null)
			return listNodeA;
		if (listNodeA.val < listNodeB.val) {
			newListNode = listNodeA;
			newListNode.next = MergeSotrListNode2(listNodeA.next, listNodeB);
		} else {
			newListNode = listNodeB;
			newListNode.next = MergeSotrListNode2(listNodeA, listNodeB.next);
		}
		return newListNode;
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值