问题描述
给定两个有序链表的头指针head1,head2,打印两个链表的公共部分
思路分析
注意是有序的链表
- 如果head1的值小于head2,那么将head1向后移
- 如果head1的值大于head2,那么将head2向后移
- 如果值相等的话,那么将这个值输出,并且两个结点都向后移动
- 其中有任意一个链表到达了尾部,则结束这个过程
代码实现
package algorithm_zuochengyun;
import java.util.LinkedList;
import java.util.Scanner;
//给定两个有序链表的头指针head1和head2,打印两个链表的公共部分
//有序有序有序!
public class CH2_01_printCommanPart {
public static void printCommanPatr(Node head1, Node head2) {
System.out.println("In method.");
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;
}
}
}
public static void main(String args[]) {
Node head1 = Node.init();
Node head2 = new Node(0);
head2.next = new Node(2);
head2.next.next = new Node(4);
head2.next.next.next = new Node(7);
printCommanPatr(head1, head2);
}
}
实现结果
问题与总结
一定要注意是有序的链表。