题目描述
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
思路:给的是一个单向链表,所以直接遍历是不可能的,可以借助栈来实现,按照链表从尾到头的顺序返回一个ArrayList
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*///链表结构
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head)
{
stack<int>st;//定义一个栈
vector<int>num;//定义一个数组
ListNode* tmp=head;//定义一个链表
while(tmp!=NULL)//将全部的元素压入栈中
{
st.push(tmp->val);
tmp=tmp->next;
}
int length=st.size();//计算栈的大小
while(length--)
{
num.push_back(st.top());将栈顶的元素放入数组
st.pop();//弹出元素
}
return num;//返回数组
}
};