剑指Offer之 - 从尾到头打印链表

来源:互联网 发布:java 获取list的泛型 编辑:程序博客网 时间:2024/05/11 18:18

题目:

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

思路:

1、栈

2、递归

代码:

#include<iostream>#include <stack>#include<vector>using namespace std;struct ListNode{int m_nKey;ListNode *m_pNext;ListNode(){}ListNode(int value):m_nKey(value),m_pNext(NULL){}};//逆序打印链表,迭代法,用栈实现void PrintListReversingly_Iteratively(ListNode *pHead){stack<ListNode *> nodes;while(pHead){nodes.push(pHead);pHead = pHead->m_pNext;}while(!nodes.empty()){ListNode *tmp = nodes.top();cout<<tmp->m_nKey<<" ";nodes.pop();}}//递归实现void PrintListReversingly_Recursively(ListNode *pHead){if(pHead != NULL){PrintListReversingly_Recursively(pHead->m_pNext);cout<<pHead->m_nKey<<" ";}}int main(){ListNode *p1 = new ListNode(1);ListNode *p2 = new ListNode(2);ListNode *p3 = new ListNode(3);p1->m_pNext = p2;p2->m_pNext = p3;PrintListReversingly_Recursively(p1);cout<<endl;PrintListReversingly_Iteratively(p1);cout<<endl;}


0 0
原创粉丝点击