通常打印是一个只读操作,我们不希望打印时修改内容,假设这个题目不能改变链表的结构。
利用栈的先进后出特点,遍历链表进栈,然后利用vector.push_back()从尾部插入节点,将栈顶的值依次插入到vector尾。最后返回vector就可以得到从尾到头的链表。
例如输入:1 2 3 4 5
输出:5 4 3 2 1
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head)
{
stack<int>Stack;
vector<int>Vector;
ListNode*phead=head;
while(phead!=NULL)
{
Stack.push(phead->val);
phead=phead->next;
}
while(!Stack.empty())
{
Vector.push_back(Stack.top());
Stack.pop();
}
return Vector;
}
};