本文是原创文章,转载请注明出处!
0.前言
# 本文为牛客网《剑指offer》刷题笔记
1.题目
# 输入一个链表,从尾到头打印链表每个节点的值
2.思路
# 不改变链表结构的情况下,首先,遍历链表将链表结点值存入栈中;然后,从栈顶逐个输出结点的值到向量。
3.code
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) { ListNode *p = head; // 遍历链表
stack<int> stk; // stack用于存储结点的值
vector<int> vec; // vector用于存储出栈的值 // 遍历链表
while(p!=NULL){
stk.push(p->val); // 压栈
p = p->next; // 下一个结点
} // 遍历栈
while(!stk.empty()){
vec.push_back(stk.top()); // 出栈后存储向量
stk.pop(); // 删除栈顶元素
}
return vec; }
};