题目描述

输入一个链表,从尾到头打印链表每个节点的值。 
输入描述:
输入为链表的表头
 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 };

 

posted on 2016-09-01 15:40  Love63  阅读(111)  评论(0编辑  收藏  举报