输入一个链表,从尾到头打印链表每个节点的值
/**
* 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;
}
}
}
以上是一种自己写的笨方法,也可以使用以下思路:
方法一:借助堆栈的“后进先出”实现
方法二:借助递归实现(递归的本质还是使用了堆栈结构)
方法三: 用反向迭代器