剑指 Offer 06. 从尾到头打印链表 (简单)【栈】
本文共 528 字,大约阅读时间需要 1 分钟。
题目:
给定一个单向链表,要求反转链表中的节点顺序,并将反转后的节点值依次输出。
代码解析:
```cpp class Solution { vector
reversePrint(ListNode* head) { stack
s; vector
ans; while (head != NULL) { s.push(head->val); head = head->next; } while (s.size()) { ans.push_back(s.top()); s.pop(); } return ans; } }; ```
解决思路:
1. 使用栈数据结构来辅助实现反转过程。 2. 遍历原始链表,将节点的值依次压入栈中。 3. 然后从栈顶依次弹出元素,将其添加到结果集合中。 4. 最后,返回反转后的节点值集合。
代码实现:
- 首先,定义一个栈`stack
`和一个结果集合`vector
ans`。 - 使用循环遍历链表,将每个节点的值压入栈中。 - 当链表遍历完成后,逐个弹出栈顶元素,将其添加到结果集合中。 - 最终,返回结果集合即可。
运行结果:
假设输入链表为:1 → 2 → 3 → 4 反转后结果为:4 → 3 → 2 → 1
转载地址:http://alao.baihongyu.com/