我是靠谱客的博主 含蓄冰棍,最近开发中收集的这篇文章主要介绍面试题:交替合并两个链表,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

交替合并两个链表
 给定一个链表 L1: L0->L1->L2->L3->L4....Ln
给定一个链表 L2: Lm->Lm+1->L....LM+n
例如
 输入
   链表1:head->1->3->5->7
   链表2:head->2->4->6->8->10->12
 输出:head->1->2->3->4->5->6->7->8->10->12
    private static class ListNode {
		Object value;
		ListNode next;

		public ListNode(Integer value) {
			this.value = value;
		}
	}

	public static void main(String[] args) {
		ListNode head1 = new ListNode(null);
		ListNode head2 = new ListNode(null);

		ListNode node1 = new ListNode(1);
		ListNode node2 = new ListNode(2);
		ListNode node3 = new ListNode(3);
		ListNode node4 = new ListNode(4);
		ListNode node5 = new ListNode(5);
		ListNode node6 = new ListNode(6);
		ListNode node7 = new ListNode(7);
		ListNode node8 = new ListNode(8);
		ListNode node10 = new ListNode(10);
		ListNode node12 = new ListNode(12);
		head1.next = node1;
		node1.next = node3;
		node3.next = node5;
		node5.next = node7;


		head2.next = node2;
		node2.next = node4;
		node4.next = node6;
		node6.next = node8;
		node8.next = node10;
		node10.next = node12;

		merge(head1.next, head2.next);
	}

	private static ListNode merge(ListNode list1, ListNode list2) {
		print(list1);
		print(list2);
		ListNode listNode = new ListNode(0);
		ListNode pointer = listNode;

		// 定义二个指针
		ListNode current1 = list1;
		ListNode current2 = list2;

		while (current1 != null && current2 != null) {

			pointer.next = current1;
			current1 = current1.next;

			pointer.next.next = current2;
			current2 = current2.next;

			pointer = pointer.next.next;
		}

		if (current1 != null) {
			pointer.next = current1;
		}

		if (current2 != null) {
			pointer.next = current2;
		}
		print(listNode.next);
		return listNode.next;
	}

	/**
	 * 打印链表
	 * @param head
	 */
	public static void print(ListNode head) {
		ListNode current = head;
		while (current != null) {
			System.out.print(current.value+",");
			current = current.next;
		}
		System.out.println();
		System.out.println("**************");
	}

 

最后

以上就是含蓄冰棍为你收集整理的面试题:交替合并两个链表的全部内容,希望文章能够帮你解决面试题:交替合并两个链表所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(30)

评论列表共有 0 条评论

立即
投稿
返回
顶部