一、题目描述
输入一个链表,从尾到头打印链表每个节点的值。
二、输入描述
输入为链表的表头
三、输出描述
使用vector按链表从尾到头保存节点
四、牛客网提供的类框架
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:
vector<int> printListFromTailToHead(struct ListNode* head) {
}
};
五、解题思路
分两步
第一:先翻转链表
第二:对翻转后的链表从链头到链尾逐步保存节点
六、代码
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:
vector<int> printListFromTailToHead(struct ListNode* head) {
ListNode *newHead, *temp;
vector<int> vt;
while(head)
{
temp = head;
head = head->next;
temp->next = newHead;
newHead = temp;
}
while(newHead){
vt.push_back(newHead->val);
newHead = newHead->next;
}
return vt;
}
};