思路
先设计出一个链表模型,模拟一个链表
难度:?
class Node{
public int value;
public Node next;
public Node(int value){
this.value = value
}
}
这种设计相当于一个node对象存储多个实例变量,通过node对象将value 赋值给 next 实例变量,通过不断的调用从而构成了一个个的节点。这里的 value 变量相当于 temp 的临时存储数据的空间。
Node node1 = new Node(1);
node1.next = new Node(5);
node1.next.next = new Node(3);
Node node2 = new Node(2);
node2.next = new Node(5);
node2.next.next = new Node(4);
接着比较大小:
- 如果 node1 的值小于 node2,则 node1 “向下移动”
- 如果 node2 的值小于 node1,则 node2 “向下移动”
- 相等的话,直接打印 node1 的值,并 node1、node2 一起“向下移动”
实现
一个编码格式不很规范,呃
package com.test.node;
import org.junit.Test;
/**
* @author lorem
*/
public class PrintlnCommonNode {
class Node{
public int value;
public Node next;
public Node(int data){
this.value = data;
}
}
void PrintlnCommonNode(Node node1,Node node2){
while (node1 != null && node2 != null){
if (node1.value < node2.value){
node1 = node1.next;
}else if(node1.value > node2.value){
node2 = node2.next;
}else{
System.out.println(node1.value+" ");
node1 = node1.next;
node2 = node2.next;
}
}
}
//附加的打印链表节点函数
void PrintlnNode(Node node) {
while (node != null) {
System.out.println(node.value + " ");
node = node.next;
}
}
@Test
public void test() {
Node node1 = new Node(1);
node1.next = new Node(5);
node1.next.next = new Node(3);
Node node2 = new Node(2);
node2.next = new Node(5);
node2.next.next = new Node(4);
PrintlnCommonNode(node1,node2);
}
}