3.从尾到头打印链表
题目
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
思路
思路给了两种,一种是递归,先到下一个结点再输出自身的值,但是可能会存在溢出情况。还有一种就是用栈,先进后出,负负得正,就行了。
(两个问题,1.牛客网在线评测头文件要自己打,这个真没想到 2.注意空链表的判断)
代码
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;
}