Shirlies
宁静专注认真的程序媛~

题目

输入一个链表,从尾到头打印链表每个节点的值。 

输入描述:
输入为链表的表头
输出描述:
输出为需要打印的“新链表”的表头

链接

http://www.nowcoder.com/practice/d0267f7f55b3412ba93bd35cfa8e8035?tpId=13&tqId=11156&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

答案

典型的递归,先进后出,用循环也可以实现,将vector当做栈

代码:

 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         vector<int> result;
14         addValToVec(head,result);
15         
16         return result;
17     }
18     
19     void addValToVec(struct ListNode *node,vector<int> &vec){
20         if(node == NULL){
21             return;
22         }
23         
24         addValToVec(node->next,vec);
25         vec.push_back(node->val);
26     }
27 };
View Code

 

posted on 2016-08-15 11:32  Shirlies  阅读(149)  评论(0)    收藏  举报