如何使用C++编程语言通过共享栈的数据结构来实现将一个整数序列中的奇数和偶数分开并分别输出的功能?
时间: 2024-11-07 16:13:46 浏览: 6
在C++中,可以使用STL(标准模板库)中的`stack`容器结合自定义的节点类来创建一个共享栈,然后对奇数和偶数进行区分存储。这里需要定义一个`Node`类,其中包含一个值和一个指向下一个奇数或偶数节点的指针。
以下是步骤:
1. 定义一个`Node`类:
```cpp
class Node {
public:
int value;
Node* next;
Node(int val) : value(val), next(nullptr) {}
};
```
2. 创建两个共享栈,一个存放奇数,一个存放偶数:
```cpp
std::stack<Node*> oddStack;
std::stack<Node*> evenStack;
```
3. 遍历整数序列,根据奇偶性决定放入哪个栈:
```cpp
std::vector<int> sequence = {1, 2, 3, 4, 5, 6, 7, 8, 9};
for (int num : sequence) {
if (num % 2 == 0) {
Node* node = new Node(num);
evenStack.push(node);
} else {
Node* node = new Node(num);
oddStack.push(node);
}
}
```
4. 分别弹出每个栈并输出:
```cpp
while (!oddStack.empty()) {
Node* top = oddStack.top();
std::cout << top->value << " is odd, ";
delete top;
oddStack.pop();
}
while (!evenStack.empty()) {
Node* top = evenStack.top();
std::cout << top->value << " is even, ";
delete top;
evenStack.pop();
}
```
这会把奇数和偶数逐个输出,并自动管理内存分配和释放。
阅读全文