package 链表;
import java.util.ArrayList;
import java.util.Stack;
public class PrintListFromTailToHead {
//输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
public static void main(String[] args) {
ListNode listNode = new ListNode(1);
ListNode listNode2 = new ListNode(2);
listNode2.next = new ListNode(3);
listNode.next = listNode2;
System.out.println(printListFromTailToHead(listNode));
}
public static ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
//声明一个Stack 栈,将链表中的数据 push 存入栈中
Stack<Integer> stack = new Stack<>();
while(listNode != null) {
stack.push(listNode.val);
listNode = listNode.next;
}
//用一个ArrayList来接收
ArrayList<Integer> arrayList = new ArrayList<>();
//Stack 遵循后进先出的原则
//将栈中的数据 取出存入arraylist中
while(!stack.isEmpty()) {
arrayList.add(stack.pop());
}
return arrayList;
}
}
创建一个链表
class ListNode {
int val;
ListNode next = null;
public ListNode(int val) {
this.val = val;
}
}
输出结果:
[3, 2, 1]