剑指offer 3.从尾到头打印链表

3.从尾到头打印链表

题目

输入一个链表,按链表从尾到头的顺序返回一个ArrayList。

思路

思路给了两种,一种是递归,先到下一个结点再输出自身的值,但是可能会存在溢出情况。还有一种就是用栈,先进后出,负负得正,就行了。
(两个问题,1.牛客网在线评测头文件要自己打,这个真没想到 2.注意空链表的判断)

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
Stack<Integer> stack = new Stack<Integer>();
ArrayList<Integer> arrayList = new ArrayList<Integer>();
if (listNode == null) {
return arrayList;
}
while (true) {
int temp = listNode.val;
stack.push(temp);
if (listNode.next == null) {
break;
}
listNode = listNode.next;
}
while (!stack.isEmpty()) {
arrayList.add(stack.pop());
}
return arrayList;
}
---本文结束,感谢阅读---