从尾到头打印链表
从尾到头打印链表
问题
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList
算法
使用两个辅助指针pre和next,遍历整个链表,将将链表反转,例如:原链表 A --> B --> C 反转之后 A <-- B <-- C,然后遍历链表,将链表元素添加到ArrayList
编码
/** * public class ListNode { * int val; * ListNode next = null; * * ListNode(int val) { * this.val = val; * } * } * */ import java.util.ArrayList; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList<Integer> list = new ArrayList<Integer>(); if(listNode == null){ return list; } ListNode pre = null; ListNode next = null; while(listNode!=null){ next = listNode.next; listNode.next = pre; pre = listNode; listNode = next; } while(pre!=null){ list.add(pre.val); pre = pre.next; } return list; } }