[算法]打印两个链表的公共部分
Posted 小魔仙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[算法]打印两个链表的公共部分相关的知识,希望对你有一定的参考价值。
题目:
给定两个有序链表的头指针head1和head2,打印两个链表的公共部分。
解答:
因为是有序列表,所以从两个链表的头开始进行如下判断:
- 如果head1的值小于head2,那么head1向下移动。
- 如果head1的值大于head2,那么head2向下移动。
- 如果二者的值相等,则打印这个值,然后head1和head2都向下移动。
- head1和head2有任何一个移动到null,整个过程停止。
程序:
public static class Node {public int value;public Node next;
public Node(int data) {this.value = data;
}}public static void printCommonPart(Node head1, Node head2) {System.out.print("Common Part: ");
while (head1 != null && head2 != null) {if (head1.value < head2.value) {
head1 = head1.next;} else if (head1.value > head2.value) {head2 = head2.next;} else {
System.out.print(head1.value + " ");
head1 = head1.next;head2 = head2.next;}}System.out.println();}public static void printLinkedList(Node node) {System.out.print("Linked List: ");
while (node != null) {System.out.print(node.value + " ");
node = node.next;}System.out.println();}
以上是关于[算法]打印两个链表的公共部分的主要内容,如果未能解决你的问题,请参考以下文章