输入一个链表,从尾到头打印链表每个节点的值。
利用栈:
vector<int> printListFromTailToHead(struct ListNode* head) {
vector<int> list;
stack<int> a;
struct ListNode *p = head;
while(p != NULL){
a.push(p->val);
p = p->next;
}
while(!a.empty()){
list.push_back(a.top());
a.pop();
}
return list;
}
利用递归:
vector<int> printListFromTailToHead(struct ListNode* head) {
vector<int> dev;
if(head!=NULL)
{
if(head->next!=NULL)
{
dev=printListFromTailToHead(head->next);
}
dev.push_back(head->val);
}
return dev;
}
最简单:
vector<int> printListFromTailToHead(struct ListNode* head) {
vector<int> v;
while(head != NULL)
{
v.insert(v.begin(),head->val);
head = head->next;
}
return v;
}