问题描述:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
下面是运用递归的方式进行求解的过程:
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
vector<int>value;
if(head != NULL)
{
value.insert(value.begin(),head->val);
if(head->next != NULL)
{
vector<int>temVector=printListFromTailToHead(head->next);
if(temVector.size() > 0)
value.insert(value.begin(),temVector.begin(),temVector.end());
}
}
return value;
}
};
tips:以下是c++中容器的insert的使用方法(转载自https://blog.csdn.net/hzw05103020/article/details/51785727):
C++容器的insert()函数有以下三种用法: 最终*it=val;
//用法1:在指定位置it前“插入”值为val的元素,返回指向这个元素的迭代器,
iterator insert( iterator it, const TYPE &val );
//用法2:在指定位置it前“插入”num个值为val的元素
void insert( iterator it, size_type num, const TYPE &val );
//用法3:在指定位置it前“插入”区间[start, end)的所有元素.
void insert( iterator it, input_iterator start, input_iterator end );
举例:
//创建一个vector,置入字母表的前十个字符
vector <char> charV;
for( int i=0; i < 10; i++ )
charV.push_back( i + 65 );
//插入四个C到vector中
vector <char>::iterator it = charV.begin();
charV.insert( it, 4, 'C' );
//显示vector的内容
for( it = charV.begin(); it != charV.end(); it++ )
cout < < *it;
这段代码将显示:
CCCCABCDEFGHIJ