方式一:使用栈实现倒序输出(栈存储的是节点)
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
vector<int> arraylist;
stack<ListNode*> reverse; //使用栈结构来实现倒序输出,且这里的栈存储的是一个个节点
ListNode *newnode=head;
while(newnode!=nullptr){ //每经过一个节点,就把该节点放到栈中
reverse.push(newnode);
newnode=newnode->next;
}
while(!reverse.empty()){ //判断栈是否为空
newnode=reverse.top(); //取出栈顶元素
arraylist.push_back(newnode->val); //在容器后面添加一个元素
reverse.pop(); //弹出栈顶元素
}
return 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> arraylist;
stack<int> reverse;
ListNode *newnode=head;
while(newnode!=nullptr){
reverse.push(newnode->val);
newnode=newnode->next;
}
int j=reverse.size();
for(int i=0;i<j;i++){
int a=reverse.top();
reverse.pop();
arraylist.push_back(a);
}
return arraylist;
}
};

京公网安备 11010502036488号