题目描述
输入一个链表,从尾到头打印链表每个节点的值。
输入描述:
输入为链表的表头
1 /** 2 * struct ListNode { 3 * int val; 4 * struct ListNode *next; 5 * ListNode(int x) : 6 * val(x), next(NULL) { 7 * } 8 * }; 9 */ 10 class Solution { 11 public: 12 vector<int> printListFromTailToHead(struct ListNode* head) { 13 /* 14 解题思路:(没有带头结点) 15 1、从尾到头打印链表每个节点的值,先将链表反转,然后从头到尾一次打印 16 */ 17 ListNode *node=head;//第一元素的指针 18 ListNode *preNode=NULL; //前一个节点的指针(必须从NULL开始) 19 ListNode *nextNode=NULL; //后一个节点的指针 20 while(node){ 21 nextNode=node->next; 22 node->next=preNode; 23 preNode=node; 24 node=nextNode; 25 } 26 vector<int> v; 27 while(preNode){ //打印链表 28 v.push_back(preNode->val); 29 preNode=preNode->next; 30 } 31 return v; 32 } 33 };