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

//思路:遍历节点,将其存在栈中,按照栈先进后出的原则,就行反向输出
import
java.util.*; import java.util.ArrayList; class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } public class aaa { Stack<Integer> s=new Stack<Integer>(); ArrayList<Integer> a=new ArrayList<Integer>(); public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { s.push(listNode.val); while(listNode.next!=null){ listNode=listNode.next; s.push(listNode.val); } while(!s.empty()){ a.add(s.pop()); } return a; } public static void main(String[] args){ ListNode l=new ListNode(5); l.next=new ListNode(6); aaa a=new aaa(); ArrayList<Integer> b=a.printListFromTailToHead(l); for (Integer integer : b) { System.out.println(integer); } } }
//思路二,考虑这个问题是一个有终止的重复过程,可以利用递归实现
import java.util.*;
import java.util.ArrayList;
     class ListNode {
        int val;
       ListNode next = null;

        ListNode(int val) {
           this.val = val;
      }
   }


public class aaa {

      ArrayList<Integer> a=new ArrayList<Integer>();
      public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
                     if(listNode!=null){
                             printListFromTailToHead(listNode.next);
                             a.add(listNode.val);
                      }
                      return a;
            }

    public static void main(String[] args){
        ListNode l=new ListNode(5);
        l.next=new ListNode(6);
        aaa a=new aaa();
        ArrayList<Integer> b=a.printListFromTailToHead(l);
        for (Integer integer : b) {
            System.out.println(integer);
        }
        
    }
}

 

posted @ 2017-07-26 10:33  竹马今安在  阅读(273)  评论(0编辑  收藏  举报