思路:栈的思想。
遍历链表时每经过一个节点,就把该节点放到栈中。当遍历完整个链表的时候,再从栈中逐个输出节点的值,此时的节点的顺序已经反转过来了。
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
#include <stack>
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
vector<int>ArrayList;
stack<ListNode *>s;
ListNode *node=head;
while(node){
s.push(node);
node=node->next;
}
while(!s.empty()){
ListNode *cur=s.top();
ArrayList.push_back(cur->val);
s.pop();
}
return ArrayList;
}
};