输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
链表信息:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
思路:
将链表的值从尾到头反过来,链表只有下一个节点的指针,所以得从头遍历取出每个值;
- 创建vector,从头到尾遍历链表,将值放入,调用std::reverse,头尾互换;
class Solution {
public:
vector<int> reversePrint(ListNode* head) {
vector<int> v;
ListNode* _head=head;
while(_head){
v.push_back(_head->val);
_head=_head->next;
}
reverse(v.begin(),v.end());
return v;
}
};
2.开始和第一种方法相同,后面在创建一个vector,用反向迭代器赋值;
class Solution {
public:
vector<int> reversePrint(ListNode* head) {
vector<int> v;
if(head==NULL)
return v;
ListNode* _end=head;
while(_end->next!=NULL){
v.push_back(_end->val);
_end=_end->next;
}
v.push_back(_end->val);
vector<int> v_reverse(v.rbegin(),v.rend());
return v_reverse;
}
};