温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

从尾到头打印单链表

发布时间:2020-08-05 22:15:11 来源:网络 阅读:365 作者:duanjiatao 栏目:编程语言

题目描述:从尾到头打印单链表输入一个链表的头结点,从尾到头反过来打印出每个节点的值


链表的节点定义如下:


struct ListNode
{
    int       m_nValue;
    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);
    }
}


从尾到头打印单链表说明:用递归的代码看起来很简洁,但是如果一个链表非常长,于是递归调用的深度越深,就有可能导致栈溢出,因此利用循环实现的代码的鲁棒性(健壮性)会更好些。从尾到头打印单链表



向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI