题目描述:
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
题解:
我们知道,ListNode 的遍历是从头到尾,而要求从尾到头返回,那我们就可以利用栈的特点,先将所有的结点的值进栈,再出栈并进到顺序表中。
(1)遍历链表,数据进栈。
(2)数据出栈,同时插入至顺序表。
import java.util.*;
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public class Solution {
// 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> list = new ArrayList<> ();
Stack<Integer> stack = new Stack<> ();
// 遍历链表,进栈
for(ListNode cur = listNode;cur != null;cur = cur.next){
stack.add (cur.val);
}
// 出栈,进顺序表
while(!stack.isEmpty ()){
int tmp = stack.pop ();
list.add (tmp);
}
return list;
}
}