剑指offer-从尾到头打印链表

题目描述

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


import java.util.ArrayList;
import java.util.Stack;

public class 从尾到头打印链表 {
	class ListNode {
		int val;
		ListNode next = null;
		ListNode(int val) {
			this.val = val;
		}
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}
	
	/*利用递归实现输出链表*/
	ArrayList<Integer> ans = new ArrayList<>();
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
    	if (listNode!=null) {
    		/*下面两句调换可实现顺序或者逆序输出链表*/
			printListFromTailToHead(listNode.next);
			ans.add(listNode.val);
		}
		return ans;
    }
    
	
	/*利用栈LIFO的特性。逆序输出*/
    public ArrayList<Integer> printListFromTailToHead2(ListNode listNode) {
        Stack<Integer> ans2 = new Stack<>();
    	while (listNode!=null) {
			ans2.push(listNode.val);
			listNode = listNode.next;
		}  	
    	while (!ans2.isEmpty()) {
			ans.add(ans2.pop());
		}   	
		return ans;
    }
     
}


你可能感兴趣的:(剑指offer-从尾到头打印链表)