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

一颗蔬菜 2019-09-23 PM 96℃ 0条

【题目】

给定两个有序链表的头指针head1和head2,打印两个链表的公共部分。

【解答】

因为是有序链表,所以从两个链表的头开始进行如下判断:

  • 如果head1的值小于head2的值,则head1往下移动。
  • 如果head2的值小于head1的值,则head2往下移动。
  • 如果head1的值和head2的值相等,则打印这个值,然后head1和head2都往下移动。
  • head1或head2有任何一个移动到null, 则整个过程停止。

【代码实现】

    public class Node {
        public int value;
        public Node next;
        public void Node(int value) {
            this.value = data;
        }
    }
    public void printCommonPar(Node head1, Node head2) {
        while (head1 != null && head2 != null ) {
            // 两个指针朝着值相等的方向移动
            if (head1.value < head2.value) {
                head1 = head.next;
            } else if (head1.value > head2.value) {
                head2 = head2.next;
            }
            if (head.value == head1.value) {
                System.out.print(head.value);
                head = head.next;
                head1 = head.mext;
            } 
        }
    }
标签: 算法

非特殊说明,本博所有文章均为博主原创。