代码:
public class TestYou {
static class Node{
int str;
Node next;
Node(int x){
str = x;
next = null;
}
}
//主要处理流程
private static Node reverse(Node root){
if(root == null || root.next == null){
return root;
}
//记录当前操作的节点
Node cur = root;
//在下边用来记录当前操作节点的下一个节点
Node oldHead = null;
//新的逆序后的头结点
Node newHead = null;
while(cur != null){
oldHead = cur.next;
cur.next = newHead;
newHead = cur;
cur = oldHead;
}
return newHead;
}
//测试
public static void main(String[] args) {
Node head = new Node(-1);
Node a = head;
for(int i = 0; i < 5; i++){
Node t = new Node(i);
a.next = t;
a = t;
}
Node p = head.next;
while(p != null){
System.out.println("处理前:"+p.str);
p = p.next;
}
System.out.println("*********************");
p = reverse(head.next);
while(p != null){
System.out.println("处理后:"+p.str);
p = p.next;
}
}
}
运行结果:
处理前:0
处理前:1
处理前:2
处理前:3
处理前:4
*********************
处理后:4
处理后:3
处理后:2
处理后:1
处理后:0