`
up2pu
  • 浏览: 223583 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多
面试题5:从尾到头打印链表

题目:
输入一个链表的头结点,从尾到头反过来打印出每个结点的值。
链表结点定义如下:
struct ListNode
{
    int       m_nKey;
    ListNode* m_pNext;
};


分析:
1.原有结构是否可以修改
可以把链表中链接结点的指针反转过来,改变链表的方向。但是修改原有结构前需要征求面试官的同意。这里假设不能修改原有结构。

2.使用栈实现还是递归实现
递归实现代码简洁,但是当链表非常长时,就会导致函数调用的层级很深,从而有可能导致函数调用栈溢出。


代码:
使用栈
void PrintListReversingly_Iteratively(ListNode* pHead)
{
    std::stack<ListNode*> nodes;
    ListNode* pNode = pHead;
    while(pNode != NULL)
    {
        nodes.push(pNode);
        pNode = pNode->m_pNext;
    }
    while(!nodes.empty())
    {
        pNode = nodes.top();
        printf("%d\t",pNode->m_nValue);
        nodes.pop();
    }
}


递归实现
void PrintListReversingly_Recursively(ListNode* pHead)
{
    if(pHead != NULL)
    {
        if(pHead->m_pNext != NULL)
        {
            PrintListReversingly_Recursively(pHead->m_pNext);
        }
        printf("%d\t", pHead->m_nValue);
    }
}


参考资料:《剑指Offer——名企面试官精讲典型编程题》
分享到:
评论

相关推荐

    面试题6--从尾到头打印链表.c

    输入一个链表,从尾到头打印链表每个节点的值。 输入: 每个输入件仅包含一组测试样例。 每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点。第一行是链表第一个节点的值,依次类推。当输入到-1时...

    java基础面试题从尾到头打印链表

    java基础面试题从尾到头打印链表本资源系百度网盘分享地址

    面试高频算法题总结-剑指Offer题解

    面试题6:从尾到头打印链表 面试题7:重建二叉树 面试题8:二叉树的下一个节点 面试题9:用两个栈实现队列 面试题10:裴波那契数列 面试题11:旋转数组的最小数字 面试题12:矩阵中的路径 面试题13:机器人的运动...

    剑指offer(java版67题)

    面试题 3:从尾到头打印链表(考点: 链表) 2 面试题 4:重建二叉树(考点: 树) 4 面试题 5:用两个栈实现队列(考点: 栈和队列) 5 面试题 6:旋转数组的最小数字(考点:查找和排序) 6 面试题 7:斐波那契数列...

    《剑指Offer》刷题笔记——面试题06. 从尾到头打印链表

    难度:简单 一、题目描述: 二、解题分析: 1、剑指解析: 2、代码实现: I、辅助栈 from typing import List ###### 代码主体 ###### class Solution: def reversePrint(self, head: ListNode) -&gt; List[int]: ...

    买股票最佳时期leetcode-Data_Structure_Exercises:LeetCode刷题记录、《剑指Offer》书中相关面试题及

    面试题06:从尾到头打印链表 (单向链表的增删改查,栈,递归) 面试题18:删除链表的节点(O(1)内删除节点,python函数的引用传递机制) 面试题22:链表中倒数第k个节点(代码的鲁棒性(空指针,越界输入等),一次...

    leetcode迷宫问题-LeetCode:LeetCode刷题之剑指offer系列

    面试题06:从尾到头打印链表 +2 栈+双数组 面试题07:重建二叉树 +2 递归 面试题09:用两个栈实现队列 +2 双栈 面试题10 - I:斐波那契数列 +2 动态规划+递归 面试题10 - II:青蛙跳台阶问题 +2 动态规划+递归 面试...

    java面试编程题(数组和链表相关) 数组和链表.pdf

    在本资源中,提供了一个示例代码,用于将链表从尾到头打印链表每个节点的值。该示例代码使用了一个 ArrayList 来存放链表中的所有值,然后将其倒序排列并返回。 本资源涵盖了 Java 中数组和链表相关的知识点,包括...

    剑指offer之python实现

    面试题5 从尾到头打印单链表 面试题6 重建二叉树 面试题7 用两个栈实现队列 2.4 算法和数据操作 面试题8 旋转数组的最小数字 面试题9 斐波那契数列 面试题10 二进制中1的个数 第3章 高质量代码 3.3 代码的完整性 ...

    【剑指offer】面试题6-从头到尾打印链表-完整的可执行代码(Java)

    题目描述: 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 解题思路参考:https://blog.csdn.net/flower_48237/article/details/104034942

    【经典面试题】单链表的常见面试题

    文章目录求单链表中有效节点的个数查找单链表中倒数第k个节点【新浪面试题】单链表的反转【腾讯面试题】从尾到头打印单链表【百度面试题,要求方式1:反向遍历。方式2:Stack栈】 单链表的常见面试题有如下: 1.求...

    为面试做准备的python经典编程题之1

    从尾到头打印链表.py 重建二叉树.py 二叉树的下一个节点.py 用两个栈实现队列.py 菲波那切数列.py 旋转数组的最小数字.py 矩阵中的路径.py 机器人的运动范围.py 剪绳子.py 二进制中1的个数.py 数值的整数次方.py ...

    Java版-剑指offer

    题目6:从尾到头打印链表 此题需要逆序输出链表的所有元素,可以借助栈这一数据结构,将链表元素压入栈中,再依次弹出。 题目9:重建二叉树 题目要求根据两个已排序的数组,构建一棵二叉搜索树。可以利用这两个数组...

    剑指offer计划2(链表)---java(csdn)————程序.pdf

    **第一题:从尾到头打印链表** 这道题目的目标是从链表的尾部开始,按照相反的顺序打印链表的元素。为了实现这一功能,我们可以首先计算链表的长度,然后使用一个大小等于链表长度的数组,从数组的末尾开始,依次将...

    前端大厂最新面试题-算法.docx

    * 从尾到头打印链表 * 重建二叉树 * 用两个栈实现队列 * 旋转数组的最小数字 * 斐波那契数列 * 跳台阶 * 变态跳台阶 * 矩形覆盖 * 二进制中1的个数 * 数值的整数次方 * 调整数组顺序使奇数位于偶数前面 * 链表中倒数...

    面试笔试真题(C++)-2017年牛客精华

    "面试笔试真题(C++)-2017年牛客精华" 从给定的文件信息中,我们可以总结出以下几个关键知识点: 1. C++中的继承:派生类对象可以访问基类成员...3. 从尾到头打印链表:输入一个链表,从尾到头打印链表每个节点的值。

    javalruleetcode-play-leetcode:用程序解决leetcode的算法问题

    从尾到头打印链表 面试题07 重建二叉树 面试题09 用两个栈实现队列 面试题10- I 斐波那契数列 面试题10- II 青蛙跳台阶问题 面试题11 旋转数组的最小数字 面试题12 矩阵中的路径 面试题13 机器人的运动范围 面试题14...

Global site tag (gtag.js) - Google Analytics