剑指Offer编程题3——从尾到头打印链表
题目描述
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
题目解析
方法1:建立两个vector,第一个用来存储正向访问的数据,第二个用来反向存储。
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; */ class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { vector<int> list; vector<int> result; while(head!=NULL) { list.push_back(head->val); head=head->next; } for(int i=list.size()-1;i>=0;i--) result.push_back(list[i]); return result; } };
方法2:
运用递归的方式:当遍历到最后一个再插入:显示超时错误
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; */ class Solution { public: vector<int> result; vector<int> printListFromTailToHead(ListNode* head) { while(head!=NULL) { printListFromTailToHead(head->next); result.push_back(head->val); } return result; } };