输入一个链表,从尾到头打印链表每个节点的值
/** * 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 tmpList=new ArrayList(); ArrayList resultList=new ArrayList(); if(listNode!=null){ while(listNode.next!=null){ tmpList.add(listNode.val); listNode=listNode.next; } //将链表尾部也加入到ArrayList中 if(listNode!=null){ tmpList.add(listNode.val); } if(tmpList.size()>1){ for(int i=0;i<tmpList.size();i++){ resultList.add(tmpList.get(tmpList.size()-i-1)); } } return resultList; }else{ return resultList; } } }以上是一种自己写的笨方法,也可以使用以下思路:
方法一:借助堆栈的“后进先出”实现
方法二:借助递归实现(递归的本质还是使用了堆栈结构)
方法三: 用反向迭代器