c++ stack 遍历
时间: 2024-03-05 21:41:24 浏览: 44
C++中的stack(堆栈)是一个容器类,实现了一个先进后出(FILO)的数据结构。stack提供了以下操作:empty()、pop()、push()、size()、top()等方法来操作栈中的元素。可以使用这些方法来遍历和操作stack中的数据。
例如,可以使用top()方法获取栈顶元素,然后使用pop()方法将栈顶元素弹出,从而实现遍历stack的操作。
相关问题
C++中序遍历非递归
C++中的二叉树序遍历有三种方式:前序遍历、中序遍历和后序遍历。下面我将介绍一下C++中的中序遍历非递归实现方法。
中序遍历的非递归实现可以使用栈来辅助完成。具体步骤如下:
1. 创建一个空栈,用于存储待访问的节点。
2. 初始化当前节点为根节点。
3. 当当前节点不为空或者栈不为空时,执行以下操作:
- 若当前节点不为空,则将当前节点入栈,并将当前节点更新为其左子节点。
- 若当前节点为空,则从栈中弹出一个节点并访问它,然后将当前节点更新为其右子节点。
4. 重复步骤3,直到当前节点为空且栈为空。
下面是C++中实现中序遍历非递归的示例代码:
```cpp
#include <iostream>
#include <stack>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
void inorderTraversal(TreeNode* root) {
stack<TreeNode*> s;
TreeNode* curr = root;
while (curr != NULL || !s.empty()) {
while (curr != NULL) {
s.push(curr);
curr = curr->left;
}
curr = s.top();
s.pop();
cout << curr->val << " ";
curr = curr->right;
}
}
int main() {
// 构造一个二叉树
TreeNode* root = new TreeNode(1);
root->left = new TreeNode(2);
root->right = new TreeNode(3);
root->left->left = new TreeNode(4);
root->left->right = new TreeNode(5);
cout << "中序遍历结果:";
inorderTraversal(root);
return 0;
}
```
运行以上代码,将输出中序遍历的结果。
c++ 链表反向遍历
C++中的链表反向遍历可以通过递归或者使用栈来实现。下面是两种方法的介绍:
1. 递归方法:
链表的反向遍历可以通过递归来实现。具体步骤如下:
- 首先,定义一个递归函数,该函数接受一个指向链表节点的指针作为参数。
- 在递归函数中,先递归调用自身,传入下一个节点的指针。
- 然后,在递归函数的末尾,输出当前节点的值。
以下是一个示例代码:
```cpp
void reverseTraversal(Node* node) {
if (node == nullptr) {
return;
}
reverseTraversal(node->next);
cout << node->data << " ";
}
```
2. 使用栈:
另一种方法是使用栈来实现链表的反向遍历。具体步骤如下:
- 首先,创建一个空栈。
- 然后,从链表的头节点开始,将每个节点依次压入栈中,直到链表的末尾。
- 最后,从栈顶开始依次弹出节点,并输出节点的值。
以下是一个示例代码:
```cpp
void reverseTraversal(Node* head) {
stack<Node*> s;
Node* current = head;
while (current != nullptr) {
s.push(current);
current = current->next;
}
while (!s.empty()) {
Node* node = s.top();
cout << node->data << " ";
s.pop();
}
}
```
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)