c++ 将第一题的栈的数据类型改为数值类型,然后实现12345分别入栈,读栈顶元素,依次出栈两个元素,输出栈顶元素的值。
时间: 2024-12-22 18:26:35 浏览: 13
好的,如果你想要将栈的数据类型从字符改为整数,你可以稍微修改上面的`Stack`类。下面是相应的代码示例:
```cpp
#include <iostream>
using namespace std;
const int MAX_SIZE = 20;
// 定义数值类型栈
class StackInt {
private:
int data[MAX_SIZE]; // 存储栈元素的数组
int top; // 栈顶指针
public:
StackInt() : top(-1) {} // 初始化栈顶指针为-1表示空栈
// 入队操作 - 压栈
void push(int value) {
if (top < MAX_SIZE - 1) {
data[++top] = value;
cout << "Pushed element: " << value << endl;
} else {
cout << "Stack is full. Can't push more elements." << endl;
}
}
// 出队操作 - 弹栈,每次出栈两个元素
void popTwo() {
if (top >= 2) {
int value1 = data[top--];
int value2 = data[top--];
cout << "Popped two elements: " << value1 << " and " << value2 << endl;
} else if (top == 1) {
int value = data[top--];
cout << "Popped one element: " << value << endl;
} else {
cout << "Stack is too small or empty. Cannot pop two elements." << endl;
}
}
// 读栈顶元素
int peek() const {
if (top >= 0) {
return data[top];
} else {
cout << "Stack is empty. No top element." << endl;
return -1; // 返回-1作为占位符
}
}
};
int main() {
StackInt stackInt;
// 入队 1, 2, 3, 4, 5
for (int num : {1, 2, 3, 4, 5}) {
stackInt.push(num);
}
// 读取并打印栈顶元素
int topElement = stackInt.peek();
cout << "Top element after pushing 12345: " << topElement << endl;
// 出队并打印元素
while (!stackInt.isEmpty()) {
stackInt.popTwo();
}
return 0;
}
```
在这个修改后的版本中,我们定义了`StackInt`,并将数据类型从`char`改为了`int`。`push`函数用于入栈整数,`popTwo`函数用于一次出栈两个元素。注意,在`popTwo`函数中,当栈只剩下一个元素时会单独弹出。
阅读全文