`
up2pu
  • 浏览: 218403 次
  • 性别: 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(java版67题)

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

    Leetcode刷题:剑指offer【面试题06】

    Leetcode题目对应位置: 面试题06:从尾到头打印链表 思路 1:改变链表方向 将链表中链接节点的指针反转过来,改变链表的方向,然后从头到尾输出即可。 代码逻辑: 1)定义 3 个指针,分别指向当前节点 cur,前一个...

    《剑指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 动态规划+递归 面试...

    剑指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.求...

    算法面试题

    输入一个链表的头结点,从尾到头反过来打 印出每个结点的值。 输入某二叉树的前序遍历和中心遍历的结 果,请重建该二叉树。:实现函数double Power(double base,int exponent),求base的exponent次方。不得使用库 ...

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

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

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

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

    leetcode二维数组-programming_exercises:leetcode、nowcoder刷题之路

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

    剑指Offer面试题代码

    输入一个链表的头结点,从尾到头反过来打印出每个结点的值。

    leetcode卡-LeetCode:LeetCode相关记录

    leetcode卡 LeetCode 每日一练 时间 序号 题目 03-01 P225 用队列实现栈 03-02 P206 反转链表 03-03 面试题10.01 ...面试题01.06 ...面试题40 ...从尾到头打印链表 07 重建二叉树 09 用两个栈实现队列 12

    leetcode分类-nowcoder:牛客网学习,包括剑指offer,程序员面试金典,leetcode,公司模拟真题,数据结构等

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

    leetcode-jian-zhi-offer:剑指Offer50题视频讲解

    从尾到头打印链表 重建二叉树 - - leetcode 105 | lintcode 73 用两个栈实现队列 - - leetcode 232 | lintcode 40 旋转数组的最小数字 - - leetcode 153 | lintcode 159 斐波那契数列 - - leetcode 509 | lintcode ...

    javalruleetcode-Leetcode:LeetCode、Swordoffer、数据结构、算法的编程题

    从尾到头打印链表 so.14.链表中倒数第k个结点 so.15.反转链表 so.16.合并两个排序的链表 so.25.复杂链表的复制 so.36.两个链表的第一个公共结点 so.55.链表中环的入口结点 so.56.删除链表中重复的结点 lc.19.删除...

Global site tag (gtag.js) - Google Analytics