从尾到头打印链表
来源:互联网 发布:autodesk maya mac 编辑:程序博客网 时间:2024/06/05 20:42
题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。(不能改变链表的结构)
struct ListNode
{
int m_nKey;
ListNode* m_pNext;
};
本题中遍历的顺序是从头到尾的顺序,但是输出却是从尾到头。所以该题符号栈的“后进先出”的特点。
因此可以用栈来实现这种顺序。每经过一个结点的时候,把该结点放到栈中,当遍历完整个链表后,再从栈顶开始逐个输出结点的值。
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);
}
}
- 从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 1、从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 【20】从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- Offer5 从尾到头打印链表
- 从尾到头打印链表
- 1、从尾到头打印链表
- 从尾到头打印链表
- 写给自己的话
- State Pattern状态模式(三)
- 2015华为软赛(四)——数据结构设计
- Dubbo 架构分析
- OC基础5:继承
- 从尾到头打印链表
- STM32W108无线ZigBee射频芯片引脚说明(下篇)
- Java程序员应该知道的10个eclipse调试技巧
- 发下牢骚(一)
- Hadoop入门系列(3) -- Eclipse+Hadoop开发环境搭建
- 推荐使用Numba加速Python科学计算
- Android开发常见问题之Handler引起的内存泄漏
- Nexus搭建Maven私服
- Android初学之------检查前置摄像头是否存在