面试题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——名企面试官精讲典型编程题》
分享到:
相关推荐
输入一个链表,从尾到头打印链表每个节点的值。 输入: 每个输入件仅包含一组测试样例。 每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点。第一行是链表第一个节点的值,依次类推。当输入到-1时...
java基础面试题从尾到头打印链表本资源系百度网盘分享地址
面试题6:从尾到头打印链表 面试题7:重建二叉树 面试题8:二叉树的下一个节点 面试题9:用两个栈实现队列 面试题10:裴波那契数列 面试题11:旋转数组的最小数字 面试题12:矩阵中的路径 面试题13:机器人的运动...
面试题 3:从尾到头打印链表(考点: 链表) 2 面试题 4:重建二叉树(考点: 树) 4 面试题 5:用两个栈实现队列(考点: 栈和队列) 5 面试题 6:旋转数组的最小数字(考点:查找和排序) 6 面试题 7:斐波那契数列...
难度:简单 一、题目描述: 二、解题分析: 1、剑指解析: 2、代码实现: I、辅助栈 from typing import List ###### 代码主体 ###### class Solution: def reversePrint(self, head: ListNode) -> List[int]: ...
面试题06:从尾到头打印链表 (单向链表的增删改查,栈,递归) 面试题18:删除链表的节点(O(1)内删除节点,python函数的引用传递机制) 面试题22:链表中倒数第k个节点(代码的鲁棒性(空指针,越界输入等),一次...
面试题06:从尾到头打印链表 +2 栈+双数组 面试题07:重建二叉树 +2 递归 面试题09:用两个栈实现队列 +2 双栈 面试题10 - I:斐波那契数列 +2 动态规划+递归 面试题10 - II:青蛙跳台阶问题 +2 动态规划+递归 面试...
在本资源中,提供了一个示例代码,用于将链表从尾到头打印链表每个节点的值。该示例代码使用了一个 ArrayList 来存放链表中的所有值,然后将其倒序排列并返回。 本资源涵盖了 Java 中数组和链表相关的知识点,包括...
面试题5 从尾到头打印单链表 面试题6 重建二叉树 面试题7 用两个栈实现队列 2.4 算法和数据操作 面试题8 旋转数组的最小数字 面试题9 斐波那契数列 面试题10 二进制中1的个数 第3章 高质量代码 3.3 代码的完整性 ...
题目描述: 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 解题思路参考:https://blog.csdn.net/flower_48237/article/details/104034942
文章目录求单链表中有效节点的个数查找单链表中倒数第k个节点【新浪面试题】单链表的反转【腾讯面试题】从尾到头打印单链表【百度面试题,要求方式1:反向遍历。方式2:Stack栈】 单链表的常见面试题有如下: 1.求...
从尾到头打印链表.py 重建二叉树.py 二叉树的下一个节点.py 用两个栈实现队列.py 菲波那切数列.py 旋转数组的最小数字.py 矩阵中的路径.py 机器人的运动范围.py 剪绳子.py 二进制中1的个数.py 数值的整数次方.py ...
题目6:从尾到头打印链表 此题需要逆序输出链表的所有元素,可以借助栈这一数据结构,将链表元素压入栈中,再依次弹出。 题目9:重建二叉树 题目要求根据两个已排序的数组,构建一棵二叉搜索树。可以利用这两个数组...
**第一题:从尾到头打印链表** 这道题目的目标是从链表的尾部开始,按照相反的顺序打印链表的元素。为了实现这一功能,我们可以首先计算链表的长度,然后使用一个大小等于链表长度的数组,从数组的末尾开始,依次将...
* 从尾到头打印链表 * 重建二叉树 * 用两个栈实现队列 * 旋转数组的最小数字 * 斐波那契数列 * 跳台阶 * 变态跳台阶 * 矩形覆盖 * 二进制中1的个数 * 数值的整数次方 * 调整数组顺序使奇数位于偶数前面 * 链表中倒数...
"面试笔试真题(C++)-2017年牛客精华" 从给定的文件信息中,我们可以总结出以下几个关键知识点: 1. C++中的继承:派生类对象可以访问基类成员...3. 从尾到头打印链表:输入一个链表,从尾到头打印链表每个节点的值。
从尾到头打印链表 面试题07 重建二叉树 面试题09 用两个栈实现队列 面试题10- I 斐波那契数列 面试题10- II 青蛙跳台阶问题 面试题11 旋转数组的最小数字 面试题12 矩阵中的路径 面试题13 机器人的运动范围 面试题14...