您的位置:首页 > Web前端

剑指offer--从尾到头打印链表

2017-10-16 11:44 344 查看

题目描述

输入一个链表,从尾到头打印链表每个节点的值。

算法描述(非递归)

1.从头到尾遍历链表,将每个结点存入栈中

2.遍历输出栈(由于剑指offer给的返回值为
vector<int>
,所以遍历栈的时候将元素在存入vector中)

代码

vector<int> printListFromTailToHead(ListNode* head) {
vector<int> v;
if(head == NULL)
return v;

stack<int> s;
while(head){
s.push(head->val);
head=head->next;
}

while(!s.empty()){
v.push_back(s.top());
s.pop();
}
return v;
}


算法描述(递归)

1.采用递归的方式,首先递归到尾结点,然后将结点值存入vector

2.利用递归退层回到上一个结点,再存入vector

3.注意vector要传引用,否则不同的函数栈帧中没有同一个vector

代码

void printListFromTailToHead(ListNode* head,vector<int>& v){
if(head == NULL)
return ;
printListFromTailToHead(head->next,v);
v.push_back(head->val);
}

vector<int> printListFromTailToHead(ListNode* head) {
vector<int> v;
printListFromTailToHead(head,v);

return v;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: