l1 链表从后往前遍历(两种算法,一种思想)



#include <iostream>
#include <stack>

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

void PrintListReversingly_Recursively_01(ListNode * pHead) {
    std::stack<ListNode *> nodes;
    // 使用stack的先进后出来实现
    ListNode * pNode = pHead;
    while (pNode != NULL) {
        nodes.push(pNode);
        pNode = pNode->m_pNext;
    }
    
    while (!nodes.empty()) {
        pNode = nodes.top();
        printf("%d \t ",pNode->m_nKey);
        nodes.pop();
    }
}

void PrintListReversingly_Recursively(ListNode* pHeader) {
    if (pHeader != NULL) {
        if (pHeader->m_pNext != NULL) {
            PrintListReversingly_Recursively(pHeader->m_pNext);//使用递归
        }
        printf("%d \t ",pHeader->m_nKey);
    }
}

int main() {
    ListNode * node1 = new ListNode();
    ListNode * node2 = new ListNode();
    ListNode * node3 = new ListNode();
    
    node1->m_nKey = 1;
    node1->m_pNext = node2;
    
    node2->m_nKey = 2;
    node2->m_pNext = node3;
    
    node3->m_nKey = 3;
    node3->m_pNext = NULL;
    
    PrintListReversingly_Recursively(node1);
    
    printf("\n");//换行
    
    PrintListReversingly_Recursively(node1);
    
    delete node1;
    delete node2;
    delete node3;
    return 0;
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 喜欢宁静自然的庭院,月季芬芳,桂子飘香,枫叶浅露羞涩,一抹红晕醉了路过的云朵,白云染上一层红妆驻足停留,绿萝青青...
    悠然无语阅读 553评论 0 0
  • 若无闲事挂心头 便是人间好时节
    妙音居阅读 731评论 7 51
  • 文/傲娇哇 和沈暮分手那段时间感觉天都快塌了下来,身边再也没了依靠。 打电话给老妈,一直啜泣着,老妈急红了眼问我。...
    傲娇哇阅读 5,851评论 102 65
  • 概念 进程:具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。 ...
    jadefly阅读 243评论 0 0