32

问答题 32 /69

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

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


参考答案

可以有两个方法:如果可以破坏链表m_pNext,那可以一个循环将所有m_pNext指向上一个接点,然后一个循环输出,然后再还原接点。
个人觉得这个太复杂。
方法二:使用递归或借助栈来做。(所有递归都可以通过栈来转成非递归)

void PutRlist(const listNode * pNode)
{
    if(!pNode) return;
    PutRlist(pNode->m_pNext);
    //输出。
    std::cout<<pNode->m_nKey<< "<-";
}