前端常见算法面试题之 - 从尾到头打印链表[JavaScript解法]
2018-10-30 20:08
567 查看
题目描述
输入一个链表的头结点,从尾到头反过来打印出每个结点的值
实现思路
前端工程师看到这个题目,直接想到的就是,写个while循环来遍历链表,在循环中把节点的值存储在数组中,最后在把数组倒序后,遍历数组打印每个值
如果这个题目这么简单,面试官也就不考了
如果面试官提要求说,不许使用数组的任何方法,你会怎么解决?
由于是链表,肯定要遍历。遍历的顺序是从头到尾,可输出的顺序却是从尾到头。
也就是先拿到的数据,最后一个输出。最后拿到的数据,第一个输出。有没有感觉跟栈的定义很像?栈就是“后进先出”,题目的要求也是。
而递归本质就是一个栈结构,所以我们用递归来实现:每次遍历时,先输出后面的节点,在输出当前节点
代码实现
function printListFromTailToHead(head) { if (head.next) { printListFromTailToHead(head.next); } console.log(head.val); }
代码看起来很清爽,但是递归有个问题,当参数很大时,会导致循环调用层级很深,有可能导致调用栈溢出。后续再讨论如何优化。
相关文章推荐
- 前端常见算法面试题之 - 二维数组中的查找[JavaScript解法]
- 前端常见算法面试题之 - 重建二叉树[JavaScript解法]
- 常见链表面试题之从尾到头打印链表
- 面试题五:从尾到头打印链表|剑指offer
- 面试题5:从尾到头打印链表
- 【剑指Offer】面试题5:从尾到头打印链表
- 【剑指offer】面试题5:从尾到头打印链表 java
- 剑指Offer:面试题5——从尾到头打印链表(java实现)
- 算法题目---从尾到头打印链表
- 【面试题005】从尾到头打印链表
- 剑指Offer面试题5:从尾到头打印链表
- 剑指Offer---面试题5:从尾到头打印链表
- 剑指Offer面试题6:从尾到头打印链表
- 面试题5:从尾到头打印链表
- 剑指Offer 面试题5 从尾到头打印链表
- 面试题5:从尾到头打印链表的c++代码实现
- 二维数组中的查找、空格替换、从尾到头打印链表 --漫漫算法路 刷题篇
- 【剑指offer】面试题5:从尾到头打印链表
- [剑指offer]面试题5:从尾到头打印链表
- 《剑指offer》面试题5:从尾到头打印链表