题目:
输入一个链表,从尾到头打印链表每个节点的值。
并且给出了链表类:
/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
思路:
1. 使用coverListNode(ListNode node)翻转链表,一般来讲是不建议的,但是像题目这样传了一个参数链表进来,不改变原来的值,算是一个不错的方法;
2. 使用栈先进后出的特点,先存进一个栈,然后出栈时存进ArrayList;
3. 就是我使用的方法- -先存进一个ArrayList,然后倒序传进另外一个ArrayList;
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> in=new ArrayList<Integer>();
ArrayList<Integer> readin=new ArrayList<Integer>();
while(listNode!=null){
in.add(listNode.val);
listNode=listNode.next;
}
for(int i=in.size()-1;i>=0;i--)
readin.add(in.get(i));
return readin;
}
}