/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
import
java.util.Stack;
import
java.util.ArrayList;
public
class
Solution{
public
ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
Stack<Integer> s=
new
Stack<>();//初始化一个栈
//这里总而言之就是将链表中所有节点中的值放入到栈中
while
(listNode!=
null
){//链表的节点,链表节点里面包括两个东西,一个是该节点的值,一个是指向下一个节点的指针
s.push(listNode.val);//获得节点listNode的值
listNode=listNode.next;//获得下一个节点的指针,并赋值给listNode
}
ArrayList<Integer> list=
new
ArrayList<>();//定义一个数组列表,主要是因为printListFromTailToHead(ListNode listNode)
//方法的返回值为ArrayList<Integer>。
while
(!s.isEmpty()){//这里的步骤就是从放入到栈中的值取出来放入到list中来,栈是先进后出的,只允许在栈顶插入删除元素。
list.add(s.pop());//pop()方法是从栈中取出栈顶的一个元素。
}
return
list;
}
}