题目描述:
输入一个链表,从尾到头打印链表每个节点的值。
思路:新建一个链表,每次都插入到新链表的头部,最后遍历新建的链表。
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) : val(x), next(NULL) {
}
};
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
vector<int> myVector;
if(head == NULL) return myVector;
ListNode *rhead = NULL;
ListNode *now;
while(head != NULL) {
now = new ListNode(head->val);
if(rhead == NULL) {
rhead = now;
} else {
now-> next = rhead;
rhead = now;
}
if(head->next != NULL) {
head = head->next;
} else {
break;
}
}
while(rhead != NULL){
myVector.push_back(rhead->val);
rhead = rhead->next;
}
return myVector;
}
};
int main()
{
ListNode *head = new ListNode(1);
head->next = new ListNode(2);
Solution *obj = new Solution();
vector<int> result = obj->printListFromTailToHead(head);
for(int i = 0; i < (int)result.size(); i++) {
printf("%d ", result[i]);
}
cout << endl;
return 0;
}