打印两个有序链表的公共部分

要求:

       给定两个有序链表的头指针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
posted @ 2017-05-09 17:19  蒋励  阅读(181)  评论(0编辑  收藏  举报