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

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;
  }
原文地址:https://www.cnblogs.com/blogxjc/p/12358443.html