题目描述
输入一个链表,从尾到头打印链表每个节点的值。
//方法一:从头到尾打印单链表,将结果存放至vector中,然后将vector倒置
vector<int> printListFromTailToHead(ListNode* head) {
if(NULL == head){
return vector<int>();
}
vector<int> result;
ListNode* phead = head;
while(phead){
result.push_back(phead->val);
phead = phead->next;
}
reverse(result.begin(),result.end());
return result;
}
//方法二:用栈来实现
vector<int> printListFromTailToHead(ListNode* head) {
if(NULL == head){
return vector<int>();
}
vector<int> result;
stack<struct ListNode*> nodes;
ListNode* phead = head;
while(phead){
nodes.push(phead);
phead = phead->next;
}
while(!nodes.empty()){
phead = nodes.top();
result.push_back(phead->val);
nodes.pop();
}
return result;
}