方式一:使用栈实现倒序输出(栈存储的是节点)
/** * 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; } };