您的位置:首页 > 其它

[算法]打印两个链表的公共部分

2016-03-07 11:29 239 查看

题目:

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

解答:

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

如果head1的值小于head2,那么head1向下移动。 如果head1的值大于head2,那么head2向下移动。 如果二者的值相等,则打印这个值,然后head1和head2都向下移动。 head1和head2有任何一个移动到null,整个过程停止。

程序:

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.print("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.print(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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: