6.从尾到头打印链表

由于链表在内存中不是连续存储的,所以必须要知道链表头指针的地址。
由于是从尾到头打印,自然而然想到用栈结构实现,因为递归本质上也是一个栈结构,所以也可以用递归实现。

栈结构实现从尾到头打印链表:

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

void PrintListReversingly(ListNode* pHead)
{
    std::stack<ListNode*> node;
    ListNode* pNode = pHead;
    while(pNode -> m_pNext != nullptr)
    {
        node.push(pNode);
        pNode = pNode -> m_pNext;
    }
    while(!node.empty())
    {
        pNode = node.top();
        printf("%d\t",pNode -> m_nvalue);
        node.pop();
    }

}

递归实现从尾到头打印链表:

void PrintListReversingly_Recrusively(ListNode* pHead)
{
    if (pHead != nullptr)
    {
        if (pHead -> m_pNext != nullptr)
        {
            PrintListReversingly_Recrusively(pHead ->m_pNext);
        }
        printf("%d\t",pHead ->m_pNext);
    }
}

一般不推荐用递归,效率太低!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容