实现思路:
顺序读取链表,并依次将各节点的val字段的值存入vector<int>arr中;
定义另一个vector<int>re,从尾至头遍历arr,依次存入re中;
最后,返回re
相关知识点:
链表节点类型的定义:要包含val域和next指针域(next为ListNode类型的指针,用于指向下一节点)
vector类型的重要函数用法:size();//返回元素个数; push_back();//每次在vector后面添加一个元素
个人出错点:
循环遍历链表时,指向下一节点的语句写成了temp++(这个错误真是很白痴!!![羞愧脸]),而不是temp=temp->next。导致总是提示堆栈溢出的错误
下面给出代码:
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
vector<int> arr;
ListNode* temp;
temp=head;
while(temp!=NULL)
{
arr.push_back(temp->val);
temp=temp->next;
}
int len=arr.size();
vector<int>re;
for(int i=len-1;i>=0;i--)
{
re.push_back(arr[i]);
}
return re;
}
};
这里补充使用栈(在C++中为stack类型)实现的方式,更简单(可以顺便学习一下stack的用法)