从尾到头打印链表:输入一个链表,从尾到头打印链表每个节点的值。
注意点:
异常情况,链表长度为 0 时应该直接返回。思路:
运用栈:将遍历的元素加入栈中,然后返回栈内容就行。内存超限,不推荐 集合框架:调用 Collections.reverse(list) 方法进行反转。 递归:构造一个函数,一直调用当前节点的下一个节点,当到达最后一个节点的时候,就开始将元素加入数组列表中。package A03从尾到头打印链表; import java.util.ArrayList; import java.util.Collections; public class Solution { public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } // 不推荐 // public ArrayListprintListFromTailToHead(ListNode listNode) { // ArrayList list = new ArrayList<>(); // while(listNode != null){ // list.add(listNode.val); // listNode = listNode.next; // } // Collections.reverse(list); // return list; // } ArrayList list = new ArrayList<>(); public ArrayList printListFromTailToHead(ListNode listNode) { if (listNode != null) { printListFromTailToHead(listNode.next); list.add(listNode.val); } return list; } }