题目描述
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
思路:对于单向链表来说,遍历元素肯定是从头到尾的,题目要求从尾部到头的顺序。所以遍历的时候暂存数据,符合先进后出的顺序,所以想到用栈的数据结构。熟悉栈的先进后出的特性以及相关函数处理。单链表的指针操作相对基础,就是连成串,为空则到结尾。
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head)
{
vector<int> results;//结果vector,存放从尾到头的数据
stack<ListNode*> nodes; //存放节点指针的栈
ListNode* pNode = head;
while (pNode != NULL) //遍历链表,入栈
{
nodes.push(pNode);
pNode = pNode->next;
}
while (!nodes.empty()) //遍历栈,用vector保存数据
{
pNode = nodes.top();
results.push_back(pNode->val);
nodes.pop();
}
return results;
}
};