1 #include "stdafx.h"
2 #include <iostream>
3 #include <exception>
4 #include <stack>
5 using namespace std;
6
7 /*从尾到头打印链表*/
8 /*
9 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。
10 */
11 struct ListNode
12 {
13 int m_nValue;
14 ListNode* m_pNext;
15 };
16
17 //根据后进先出的思想,考虑用栈的方法
18 void PrintListReversingly_Iteratively(ListNode* pHead)
19 {
20 std::stack<ListNode*> nodes;
21 ListNode* pNode = pHead;
22 while(pNode!=NULL)
23 {
24 nodes.push(pNode);
25 pNode=pNode->m_pNext;
26 }
27 while(!nodes.empty())
28 {
29 pNode = nodes.top();
30 cout<<pNode->m_nValue<<endl;
31 nodes.pop();
32 }
33 }
34
35 //根据后进先出的思想,考虑用递归的方法
36 void PrintListReversingly_Iteratively(ListNode* pHead)
37 {
38 if(pHead != NULL){
39 if(pHead->m_pNext != NULL)
40 PrintListReversingly_Iteratively(pHead->m_pNext);
41 cout<<pHead->m_nValue<<endl;
42 }
43 }
44
45 int _tmain(int argc, _TCHAR* argv[])
46 {
47 return 0 ;
48 }