题目描述
输入一个链表,从尾到头打印链表每个节点的值。
题目不难,有几个点要注意:
代码思路借助栈,遍历的时候入栈,由于数据结构中栈的特点是先进后出,所以遍历的过程中压栈,推栈,完了弹栈加到ArrayList中。
有两个容易出错的地方:
第一,第一次测试用例,{}返回[ ],null是null,而[ ]是new ArrayList()但是没有数据。
第二,遍历stack用的方法是!stak.isEmpty()方法,而不是for循环size遍历。
不用栈也可以实现,最简单的方法:
实现代码
import java.util.Stack;
import java.util.ArrayList;
import java.util.Collections;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> arr=new ArrayList<Integer>();
if(listNode==null){
return arr;//第一次测试用例,{}返回[ ],null是null,而[ ]是new ArrayList()但是没有数据。
}else{
arr.add(listNode.val);
while(listNode.next!=null){
listNode=listNode.next;
arr.add(listNode.val);
}
Collections.reverse(arr);//切记从尾到头打印
return arr;
}
}
}