`
923723914
  • 浏览: 636211 次
文章分类
社区版块
存档分类
最新评论

从尾到头输出链表

 
阅读更多


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

链表结点定义如下:

struct ListNode
{
    int m_nKey;
    ListNode* m_pNext;
};

答:1、可以先把链表逆置,然后再输出,具体参考

http://www.cnblogs.com/venow/archive/2012/08/26/2657559.html

这里我们使用另一种更为简单的方法:递归


#include "stdafx.h"
#include <iostream>
#include <fstream>

using namespace std;

struct ListNode
{
    int m_nKey;
    ListNode* m_pNext;
};

//构造链表
void CreateList(ListNode *&pHead)
{
    fstream fin("list.txt");
    ListNode *pNode = NULL;
    ListNode *pTmp = NULL;
    int data;
    fin>>data;
    while (data)
    {
        pNode = new ListNode;
        pNode->m_nKey = data;
        pNode->m_pNext = NULL;
        if (NULL == pHead)
        {
            pHead = pNode;
            pTmp = pNode;
        }
        else
        {
            pTmp->m_pNext = pNode;
            pTmp = pNode;
        }

        fin>>data;
    }
}

//从头到尾输出链表
void PrintList(ListNode *pHead)
{
    if (NULL == pHead)
    {
        return;
    }
    ListNode *pNode = pHead;
    while (NULL != pNode)
    {
        cout<<pNode->m_nKey<<"  ";
        pNode = pNode->m_pNext;
    }
    cout<<endl;
}

//从尾到头输出链表
void PrintTailToHeadList(ListNode *pHead)
{
    if (NULL != pHead)
    {
        PrintTailToHeadList(pHead->m_pNext);
        cout<<pHead->m_nKey<<"  ";
    }
}

int _tmain(int argc, _TCHAR* argv[])
{
    ListNode *pHead = NULL;
    CreateList(pHead);
    cout<<"从头到尾输出:";
    PrintList(pHead);
    cout<<"从尾到头输出:";
    PrintTailToHeadList(pHead);
    cout<<endl;
    return 0;
}
分享到:
评论

相关推荐

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

    题目描述: 输入一个链表,从尾到头打印链表每个节点的值。 输入: 每个输入件仅包含一组测试样例。 每一组测试案例包含多行,每行一个大于...对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行。

    从尾到头打印链表1

    从尾到头打印链表输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输出:[2,3,1]"* Definition for singl

    Trouvaille0198#Notes#剑指 Offer 06. 从尾到头打印链表1

    剑指 Offer 06. 从尾到头打印链表输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输出:[2,3,1]辅助栈// 辅助栈s

    基于python实现从尾到头打印链表

    输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 思路 遍历链表,把结构保存在list里面,然后把list逆序输出 代码 # -*- coding:utf-8 -*- # class ListNode: # def __init__(self, x): # self.val = x #...

    NoCodeNolife-cloud#leetcode-Practice-Questions#剑指 Offer 06. 从尾到头

    输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输出:[2,3,1]限制:0 链表长度 * Definiti

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

    【面试题06】从尾到头打印链表 难度: 简单 限制: 0 &lt;= 链表长度 &lt;= 10000 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 Leetcode题目对应位置: 面试题06:从尾到头打印链表 思路...

    Java面试 Java超级经典100问题 Java高级开发工程师必备 Java面试宝典

    5.从尾到头打印链表.6.由前序和中序遍历重建二叉树.7.用两个栈实现队列8.求旋转数组的最小数字、9.斐波那契数列的第n项(青蛙跳台阶)10.二进制中1的个数、11.数值的整数次方、12.打印1到最大的n位数13. O(1)时间删除...

    算法面试题

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

    《剑指Offer》题目及代码.zip

    5. 从尾到头打印链表 6. 由前序和中序遍历重建二叉树 7. 用两个栈实现队列 8. 求旋转数组的最小数字 9. 斐波那契数列的第n项(青蛙跳台阶) 10. 二进制中1的个数 11. 数值的整数次方 12. 打印1到最大的n位数 ...

    LeetCode判断字符串是否循环-algorithm:算法

    从尾到头打印链表 4. 重建二叉树 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2...

    数据结构与算法.xmind

    递归从尾到头输出单链表 只要下面还有数据,那就往下找,递归是从最后往前翻。 反转链表 有递归和非递归两种方式 双向链表 循环链表 树 二叉树 完全二叉树 堆 满二叉树 ...

    世界500强面试题.pdf

    1.6.5. 输入一个链表的头结点,从尾到头反到来输出每个结点的值..............134 1.6.6. 用 C++设计一个不能被继承的类 .......................................................136 1.6.7. 给定链表的头指针和一...

Global site tag (gtag.js) - Google Analytics