从尾到头打印链表
输入一个链表,从尾到头打印链表每个节点的值。
个人认为如果本题就只是打印的话,最好不要反转链表(你什么时候见过打印函数改变数据结构了的)。
我的思路:存储顺序值,然后反转。
注意:
1、reverse(vprint.begin(),vprint.end());//algorithm的使用!!!
2、重新构造。
以上两种衡量选择。
另外我看别人有递归写法:
我觉得不断递归到最末尾时候开始加入节点,这是比较好的思路。
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:
vector<int> printListFromTailToHead(struct ListNode* head) {
vector<int> vprint;
for(struct ListNode* cur=head;cur!=nullptr;cur=cur->next){
vprint.push_back(cur->val);
}
reverse(vprint.begin(),vprint.end());//algorithm
return vprint;//vector<int>(vprint.rbegin(),vprint.rend());
}
};