题目描述
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
分析
根据返回从头到尾的ArrayList,刚好符合"先进后出"的原则,对应数据结构的 栈,所以用栈来存储
源代码
public class Dome5 {
int value;//数值
Dome5 next=null;//指向下一节点
public Dome5(int value) {
this.value = value;
}
public static void main(String[] args) {
Dome5 dome5=new Dome5(0);
Dome5 dome51=new Dome5(1);
dome5.next=dome51;
ArrayList<Integer> integers = dome5.printListFromTailToHead(dome5);
System.out.println(integers);
}
/**
*
* @param listNode 链表头节点
* @return 从尾到头的顺序返回的ArrayList。
*/
public ArrayList<Integer> printListFromTailToHead(Dome5 listNode) {
Stack<Integer> stack=new Stack();//定义一个栈
ArrayList<Integer> list=new ArrayList<>();//定义返回的定义返回的list
Dome5 d=listNode;
while(d!=null){//压栈
stack.push(d.value);
d=d.next;
}
while(!stack.empty()){//出栈
list.add(stack.pop());
}
return list;
}
}