面试题6:从头到尾打印链表

2019-08-03  本文已影响0人  繁星追逐

输入一个链表的头节点,从尾到头打印链表每个节点的值。
1,逆序输出,即使用数据结构栈为先进后出特性,依次存储节点值,然后输出

private class ListNode{
        int val;
        ListNode next = null;
        ListNode(int val){
            this.val = val;
        }
    }
/**
 * 使用栈结构正序弹入,逆序输出
 * @param listNode
 * @return
 */

public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
    LinkedList<Integer> stack = new LinkedList<>();
    for (ListNode node = listNode; node != null;node = node.next){
        stack.push(node.val);
    }
    return new ArrayList<>(stack);
}

将其他集合转化为ArrayList,直接使用无参构造方法
2,递归,树结构一般都可以选择递归节点

/**
     * 递归一直到最后一个才开始添加
     */
    private ArrayList<Integer> list = new ArrayList<>();
    public ArrayList<Integer> printListFromTailToHead1(ListNode listNode) {
        if (listNode != null){
            printListFromTailToHead1(listNode.next);
            list.add(listNode.val);
        }
        return list;
    }
上一篇 下一篇

猜你喜欢

热点阅读