双指针反转
private static ListNode revertNode(ListNode head) {
ListNode pre = null;
ListNode cur = head;
ListNode next;
while(cur != null){
next = cur.next;
cur.next = pre;
pre = cur;
cur = next;
}
return pre;
}
栈方式
private static ListNode revertNode(ListNode head){
Stack<ListNode> stack = new Stack<>();
while(head != null){
stack.push(head);
head = head.next;
}
ListNode dummyHead = new ListNode(0);
ListNode cur = dummyHead;
while(!stack.isEmpty()){
cur.next = new ListNode(stack.pop().val);
cur = cur.next;
}
return dummyHead.next;
}