要求:
给定两个有序链表的头指针head1和head2, 打印两个链表的公共部分
思路:
if 【head1】>【head2】,【head1】往下移动;
if 【head1】<【head2】,【head2】往下移动;
if 【head1】=【head2】,打印这个值,【head1】【head2】都往下移动;
if 【head1】=【head2】,打印这个值,【head1】【head2】都往下移动;
public class Problem01_PrintCommonPart { 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.println("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.println(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(); } public static void main(String[] args) { Node node1 = new Node(2); node1.next = new Node(3); node1.next.next = new Node(5); node1.next.next.next = new Node(6); Node node2 = new Node(1); node2.next = new Node(2); node2.next.next = new Node(5); node2.next.next.next = new Node(7); node2.next.next.next.next = new Node(8); printLinkedList(node1); printLinkedList(node2); printCommonPart(node1, node2); } }
运行结果:
Linked List: 2 3 5 6 Linked List: 1 2 5 7 8 Common part: 2 5