题目描述
输入一个链表,从尾到头打印链表每个节点的值。
思路
递归,判断链表的下一个节点是否为空,如果为空,则说明到了末尾节点,将节点存入结果中 ``` /**
- public class ListNode {
- int val;
- ListNode next = null; *
- ListNode(int val) {
- this.val = val;
- }
- } * */ import java.util.Stack; import java.util.ArrayList; public class Solution { public ArrayList
printListFromTailToHead(ListNode listNode) { ArrayList list=new ArrayList ();
ListNode pNode=listNode;
if(pNode!=null){
if(pNode.next!=null){
list=printListFromTailToHead(pNode.next);
}
list.add(pNode.val);
}
return list;
} } ``` > 第二种方法:先把链表入栈,再出栈
/**
* 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) {
Stack<Integer> sk=new Stack<Integer>();
while(listNode!=null)
{
sk.push(listNode.val);
listNode=listNode.next;
}
ArrayList<Integer> al=new ArrayList<Integer>();
while(!sk.isEmpty())
{
al.add(sk.pop());
}
return al;
}
}