public class MyNode {
private Long value;
private MyNode nextNode;
public static void main(String[] args) {
MyNode myNode = getMyNode();
// 反转前:MyNode [value=3, nextNode=MyNode [value=2, nextNode=MyNode [value=1, nextNode=null]]]
System.out.println(myNode.toString());
System.out.println("反转后:----------------------");
// 反转单项列表
MyNode newNode = reverseMyNode(myNode);
// 反转后:MyNode [value=1, nextNode=MyNode [value=2, nextNode=MyNode [value=3, nextNode=null]]]
System.out.println(newNode.toString());
}
// 构建一个单项列表
private static MyNode getMyNode() {
MyNode node1 = new MyNode(1L, null);
MyNode node2 = new MyNode(2L, node1);
MyNode node3 = new MyNode(3L, node2);
return node3;
}
private static MyNode reverseMyNode(MyNode node) {
if(node == null) return node;
MyNode pre = null;
MyNode next = null;
while (node != null) {
next = node.getNextNode();
node.setNextNode(pre);
pre = node;
node = next;
}
return pre;
}
public MyNode(Long value, MyNode nextNode) {
super();
this.value = value;
this.nextNode = nextNode;
}
public MyNode getNextNode() {
return nextNode;
}
public void setNextNode(MyNode nextNode) {
this.nextNode = nextNode;
}
@Override
public String toString() {
return "MyNode [value=" + value + ", nextNode=" + nextNode + "]";
}
}