栈的应用,创建一个顺序字符类型的栈,栈的长度是20,依次实现ABCD四个字符的入队,读栈顶元素,然后依次出栈一个元素,输出出栈的元素值,并读栈顶元素。用c++语言实现,结构体。
时间: 2024-12-22 17:26:49 浏览: 19
栈是一种后进先出(LIFO, Last In First Out)的数据结构,常用于递归函数调用、表达式求值、内存管理等场景。下面是一个简单的C++程序,使用`std::stack<char>`(标准库提供的字符型栈容器)来实现你的需求:
```cpp
#include <iostream>
#include <stack>
// 定义栈的结构体,包含一个字符数组和栈的大小
struct Stack {
char elements[20];
int top;
};
// 初始化栈
void init(Stack &s) {
s.top = -1; // 表示空栈
}
// 判断栈是否为空
bool isEmpty(const Stack &s) {
return s.top == -1;
}
// 入栈操作
void push(Stack &s, char value) {
if (s.top < 19) { // 避免栈满
s.elements[++s.top] = value;
} else {
std::cout << "Stack is full, can't push!" << std::endl;
}
}
// 出栈操作
char pop(Stack &s) {
if (isEmpty(s)) {
std::cout << "Stack is empty, no element to pop!" << std::endl;
return '\0'; // 返回空字符表示栈空
} else {
return s.elements[s.top--]; // 减小top并返回栈顶元素
}
}
int main() {
Stack stack;
init(stack);
// 入队:依次加入A、B、C、D
push(stack, 'A');
push(stack, 'B');
push(stack, 'C');
push(stack, 'D');
// 读栈顶元素并输出
std::cout << "Top element: " << stack.top < 0 ? "Empty" : stack.elements[stack.top] << std::endl;
// 依次出栈并输出
for (int i = 0; i <= stack.top; ++i) {
std::cout << "Popped element: " << stack.elements[i] << std::endl;
}
return 0;
}
```
阅读全文