题目描述
点这里.
思路分析
链表模拟题
a,b俩指针,从头到尾移动,移动过程中修改指针指向,移动到尾部后,链表也就倒置了。反向再遍历一边,存储答案即可。
代码实现
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
vector<int> ans;
if(head==NULL) return ans; //判空
auto a=head,b=a->next;
while(b->next){
auto c=b->next;
b->next=a;
a=b;
b=c;
}
//注意下边这两句,是对头和尾情况的特殊处理
head->next=NULL;
b->next=a;
while(b){
ans.push_back(b->val);
b=b->next;
}
return ans;
}
};