03 从尾到头打印链表

输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。

 1 /**
 2 *    public class ListNode {
 3 *        int val;
 4 *        ListNode next = null;
 5 *
 6 *        ListNode(int val) {
 7 *            this.val = val;
 8 *        }
 9 *    }
10 *
11 */

思路一:递归

 

 1 /**
 2 *    public class ListNode {
 3 *        int val;
 4 *        ListNode next = null;
 5 *
 6 *        ListNode(int val) {
 7 *            this.val = val;
 8 *        }
 9 *    }
10 *
11 */
12 import java.util.*;
13 public class Solution {
14     ArrayList<Integer> a=new ArrayList<Integer>();
15     public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
16         if(listNode == null) return a ;
17         if(listNode!=null){
18             this.printListFromTailToHead(listNode.next);
19             a.add(listNode.val);
20         }
21         return a;
22     }
23 }

 

 

 

方法二 利用堆栈的先进后出

 1 import java.util.ArrayList;
 2 import java.util.Stack;
 3 public class Solution {
 4     public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
 5         Stack<Integer> stack=new Stack<Integer>();
 6         while(listNode!=null){
 7             stack.push(listNode.val);
 8             listNode=listNode.next;     
 9         }
10         
11         ArrayList<Integer> list=new ArrayList<Integer>();
12         while(!stack.isEmpty()){
13             list.add(stack.pop());
14         }
15         return list;
16     }
17 }

 

posted @ 2019-06-27 09:54  淡如水94  阅读(372)  评论(0)    收藏  举报