题目描述
输入一个链表,从尾到头打印链表每个节点的值。
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
}
};
思路:用vector::push_back将链表从头到尾压入到一个新的向量v中,然后return(v.rbegin(), v.rend(0)将向量倒序。
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
//新建一个向量存放链表中的数值
vector<int> v;
if(head != NULL)
{
ListNode* p = head;
while(p != NULL)
{
//将链表中的val压入到向量中
v.push_back(p -> val);
p = p->next;
}
}
//倒序向量
return vector<int>(v.rbegin(), v.rend());
}
};
反向迭代器rbegin和rend的用法见博客:https://blog.csdn.net/laobai1015/article/details/51567564