public class NodeReverse {
public static void main(String[] args) {
Node<Integer> initData = init();
Node<Integer> header = initData;
while (header!=null){
System.out.println(header.data);
header = header.next;
}
Node<Integer> resultNode = reverseLinkedNode(initData);
System.out.println("--------翻转后的结果------------");
while (resultNode!=null){
System.out.println(resultNode.data);
resultNode = resultNode.next;
}
}
public static Node<Integer> reverseLinkedNode(Node<Integer> node){
Node<Integer> header = null,cur = node;
//while判断当前节点不能为null
while (cur!=null){
//将当前节点的下一个节点,存储到一个临时变量中
Node<Integer> next = cur.next;
//将header当作当前节点的头部
cur.next = header;
//然后将当前节点,作为新的头部,为下次遍历作准备
header = cur;
//将上面存储的下一个节点变成当前节点,继续反转
cur = next;
}
return header;
}
public static Node<Integer> init(){
Node<Integer> header = new Node<Integer>(0);
Node<Integer> pre = header;
for (int i = 1; i < 10; i++) {
pre.next = new Node<Integer>(i);
pre = pre.next;
}
return header;
}
}
class Node<T>{
public T data;
public Node<T> next;
public Node(T data) {
this.data = data;
}
}