C++利用栈实现数据的分类,要求当输入为偶数时进栈1,当输入为奇数时进栈2,最后分别从栈1和栈2输出偶数和奇数序列。
时间: 2024-10-16 15:15:47 浏览: 46
在C++中,你可以使用两个独立的栈来实现这个需求,一个用于存储偶数,另一个用于存储奇数。这里是一个简单的示例,使用`std::stack`容器:
```cpp
#include <iostream>
#include <stack>
class NumberClassifier {
public:
void push(int num) {
if (num % 2 == 0) { // 如果数字是偶数
evenStack.push(num);
} else { // 否则是奇数
oddStack.push(num);
}
}
std::vector<int> popEven() {
std::vector<int> result;
while (!evenStack.empty()) {
result.push_back(evenStack.top());
evenStack.pop();
}
return result;
}
std::vector<int> popOdd() {
std::vector<int> result;
while (!oddStack.empty()) {
result.push_back(oddStack.top());
oddStack.pop();
}
return result;
}
private:
std::stack<int> evenStack;
std::stack<int> oddStack; // 双向链表也可以,这里是简单版本
};
int main() {
NumberClassifier classifier;
int input;
std::cout << "Enter numbers (0 to stop): ";
while (std::cin >> input && input != 0) {
classifier.push(input);
}
std::cout << "Even numbers: ";
for (int num : classifier.popEven()) {
std::cout << num << " ";
}
std::cout << "\nOdd numbers: ";
for (int num : classifier.popOdd()) {
std::cout << num << " ";
}
return 0;
}
```
在这个程序中,我们创建了一个名为`NumberClassifier`的类,它有两个私有栈`evenStack`和`oddStack`。当用户输入一个数字时,我们检查其奇偶性并相应地推入堆栈。然后,我们可以轻松地逐个弹出并打印每个栈的内容。
阅读全文
相关推荐















