package chapter02_listproblem;
/**
* 打印两个有序链表的公共部分
*
* @author buder_cp
*
*/
public class _01_PrintCommonPart {
/**
* 初始化一个节点
*
* @author buder_cp
*
*/
public static class Node {
public int value;
public Node next;
public Node(int data) {
this.value = data;
}
}
/**
* 打印链表
*
* @param node
*/
public static void printLinkedList(Node node) {
while (node != null) {
System.out.println(node.value + " ");
node = node.next;
}
System.out.println();
}
/**
* 公共链表的逻辑: 如果链表1小于链表2则,链表1后移 如果链表2小于链表1则,链表2后移
*
* @param head1
* @param head2
*/
public static void printCommonPart(Node head1, Node head2) {
while (head1 != null && head2 != null) {
if (head1.value < head2.value) {
head1 = head1.next;
} else if (head2.value < head1.value) {
head2 = head2.next;
} else {
System.out.println(head1.value + " ");
head1 = head1.next;
head2 = head2.next;
}
}
}
public static void main(String[] args) {
Node node1 = new Node(2);
node1.next = new Node(4);
node1.next.next = new Node(3);
node1.next.next.next = new Node(331);
Node node2 = new Node(4);
node2.next = new Node(3);
node2.next.next = new Node(4);
node2.next.next.next = new Node(33);
printCommonPart(node1, node2);
}
}