方法一: 使用栈,出栈的时候一次指向下一个栈顶的节点
/*public class ListNode {
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
import java.util.Stack;
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head == null)
{
return null;
}
Stack stack = new Stack();
ListNode node = head;
ListNode result ;
while(node.next != null)
{
stack.push(node);
node = node.next;
}
result = node;
while(!stack.empty())
{
node.next =(ListNode) stack.peek();
node = (ListNode)stack.pop();
}
node.next = null;
return result;
}
}
方法二: 遍历链表,保存后一个节点,将后一个节点指向前一个节点
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head == null)
{
return null;
}
ListNode node = head;
ListNode pre = null;
ListNode next = null ;
while(node.next != null)
{
next= node.next;
node.next = pre;
pre = node;
node = next;
}
node.next = pre;
return node;
}
}