import java.util.*;
//思路:使用栈结构,先压入栈,再压出栈,但是要注意最后一个压出的节点,要默认连接null;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* public ListNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类
* @return ListNode类
*/
public ListNode ReverseList (ListNode head) {
//使用栈结构
if(head == null || head.next == null){
return head;
}
//构造一个栈
Stack<ListNode> stack = new Stack<>();
//压入栈操作
while(head != null){
stack.push(head);
head = head.next;
}
stack.forEach(s -> System.out.println(s.val));
//出栈操作
//先记录一个栈节点的出栈头节点
ListNode newHead = stack.pop();
ListNode pHead = newHead; //记录这个头节点,一会头节点会移动
while(!stack.isEmpty()){
ListNode curNode = stack.pop();
newHead.next = curNode;
newHead = curNode;
}
//最后一个节点,需要指向null
newHead.next = null;
return pHead;
}
}