本博客转载自:
作者:感冒的青春
链接: 点击打开链接來源:简书
#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;
}