题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
代码:
//迭代库函数实现 class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { vector<int> ArrayList; while(head != NULL){ ArrayList.insert(ArrayList.begin(), head ->val); head = head ->next; } return ArrayList; } };
//递归实现 class Solution { public: vector<int> ArrayList; vector<int> printListFromTailToHead(ListNode* head) { ListNode* p; p = head; if( p != NULL ){ if( p ->next != NULL){ printListFromTailToHead(p ->next); } ArrayList.push_back(p ->val); } return ArrayList; } };
我的笔记:迭代实现,需要注意每一次迭代循环后都要将当前指针指向下一个位置。递归实现,需要注意将数组ArrayList设为类中的公有变量,否则在每次递归时都会重新定义数组,使得无法存储变量,利用递归实现就是将链表所有值入栈,再依次出栈的原理。