题目描述
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
/**
* Created by ZengXihong 2019-05-28.
*
*/
import java.util.ArrayList;
import java.util.Stack;
/**
* 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
* 原理: 利用栈的先进后出原理
*/
public class Solution3 {
public static ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
//定义返回list
ArrayList<Integer> integers = new ArrayList<>();
//定义一个栈
Stack<Integer> stack = new Stack<>();
//遍历链表,如果不为null,则加到栈中
while (listNode != null) {
stack.push(listNode.val);
listNode = listNode.next;
}
//出栈
while (stack.size() > 0) {
integers.add(stack.pop());
}
return integers;
}
public static void main(String[] args) {
ListNode listNode = new ListNode(0);
listNode.next = new ListNode(1);
listNode.next.next = new ListNode(2);
listNode.next.next.next = new ListNode(3);
ArrayList<Integer> integers = printListFromTailToHead(listNode);
System.out.println(integers);
}
}
// 链表的定义类
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}