1.使用递归的方法
public void reverseByRecur(Node head){
if(head==null)
return;
reverseByRecur(head.next);
System.out.print(head.data);
}
2.根据栈的后进先出原则,可以使用栈,需要使用N个附加空间
public void reverseByStack(Node head){
if(head==null)
return;
Stack<Node> stack=new Stack<Node>();
while(head!=null){
stack.push(head.data);
head=head.next;
}
while(!stack.isEmpty()){
System.out.print(stack.pop+" ");
}
}
3.使用三个指针,使用的就是常数空间,通过指针反转就是当前指针的下一个指针变为他的前指针,当前指针的上一个指针变为它的下一个指针。
public Node reverseByNode(){
Node pre=null;
Node current=head;
while(current!=null){
Node next=current.next;
current.next=pre;
current.prev=next;
pre=current;
current=next;
}
return pre;
}