本博客轉載自:
作者:感冒的青春
鏈接:點擊打開鏈接來源:簡書
#include<iostream>
#include<stack>
#include<vector>
using namespace std;
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
class Solution
{
public:
std::vector<int> printListFromTailToHead(struct ListNode* head) {
std::vector<int> result;//存儲輸出的節點的值
std::stack<struct ListNode*> nodes;//用棧來存儲每個節點
struct ListNode* pNode = head;//從鏈表頭開始
while (pNode != NULL) { //鏈表的所有節點全部入棧
nodes.push(pNode);
pNode = pNode->next;
}
while (!nodes.empty())
{ //出棧:後進先出
pNode = nodes.top();
result.push_back(pNode->val);
;
nodes.pop();
}
return result;
}
};
int main()
{
ListNode* head = new ListNode(-1);
ListNode* pnode1 = new ListNode(0);
head->next = pnode1;
ListNode* pnode2 = new ListNode(1);
pnode1->next = pnode2;
ListNode* pnode3 = new ListNode(2);
pnode2->next = pnode3;
pnode3->next = NULL;
Solution A;
vector<int> result;
result = A.printListFromTailToHead(head);
cout << "OK" << endl;
vector<int>::iterator iElementLocator = result.begin();
while (iElementLocator != result.end())
{
cout << *iElementLocator << endl;
++iElementLocator;
}
system("pause");
return 0;
}