题目描述
输入一个链表,从尾到头打印链表每个节点的值。
思路
思路一:
递归方法
思路二:
从尾到头打印,很明显先进后出,利用栈,栈先进后出
代码实现
package LinkedList; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Deque; /** * 输入一个链表,从尾到头打印链表每个节点的值。 */ public class Solution10 { /** * 从尾到头打印,很明显先进后出,利用栈,栈先进后出 * * @param listNode * @return */ public ArrayList printListFromTailToHead_2(ListNode listNode) { if (listNode == null) { ArrayList arrayList = new ArrayList(); return arrayList; } //定义一个栈 Deque stack = new ArrayDeque(); while (listNode != null) { stack.push(listNode.val);//入栈 listNode = listNode.next; } while (!stack.isEmpty()) { arrayList.add(stack.pop());//出栈,并添加到arrayList } return arrayList; } ArrayList arrayList = new ArrayList(); /** * 递归方法 * * @param listNode * @return */ public ArrayList printListFromTailToHead(ListNode listNode) { if (listNode != null) { printListFromTailToHead(listNode.next); arrayList.add(listNode.val); } return arrayList; } public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } }