剑指offer(3)

从尾到头打印链表

Posted by LQ on June 29, 2017

题目描述

输入一个链表,从尾到头打印链表每个节点的值。

思路

递归,判断链表的下一个节点是否为空,如果为空,则说明到了末尾节点,将节点存入结果中 ``` /**

  • 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;
    }
}