面试题6: 输入一个链表,从尾到头打印链表每个节点的值。

可以使用

Stack<Integer> stack = new Stack<>();

来实现从尾到头打印链表,而递归在本质上也是栈结构,所以最最简洁的代码是用递归实现;

/**
*    public class ListNode {
*        int val;
*        ListNode next = null;
*
*        ListNode(int val) {
*            this.val = val;
*        }
*    }
*
*/
import java.util.ArrayList;
public class Solution {
    ArrayList<Integer> list = new ArrayList<Integer>();
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        if(listNode!=null){
            printListFromTailToHead(listNode.next);
            list.add(listNode.val);
        }
        return list;
    }
}

 完整代码如下:

import java.util.ArrayList;

public class ReversePrintLink {
    public static void main(String[] args){
        ListNode list1=new ListNode(1);
        ListNode list2=new ListNode(2);
        ListNode list3=new ListNode(3);
        list1.next=list2;
        list2.next=list3;
        list3.next=null;

        Solution solution=new Solution();
        ArrayList<Integer> list = solution.printListFromTailToHead(list1);
        list.forEach(item->{
            System.out.println(String.valueOf(item));
        });
    }
}

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

class ListNode {
    int val;
    ListNode next = null;

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

 

posted @ 2017-12-10 16:55  Allen101  阅读(876)  评论(0编辑  收藏  举报