顺序栈(一个整形变量top)的完整代码(含定义、初始化、进栈、出栈、判空、判满等),显示一次完整的运行结果
时间: 2024-09-27 16:14:12 浏览: 45
顺序栈是一种简单的数据结构,通常用于内存空间有限的情况。它通过数组实现,使用一个整型变量`top`来表示栈顶元素的位置。下面是一个基本的顺序栈实现,包括定义、初始化、操作栈以及相应的判断:
```c++
#include <iostream>
// 定义顺序栈结构体
struct Stack {
int stack[100]; // 假设栈的最大容量是100
int top; // 栈顶元素的索引
};
// 初始化函数,将top设置为-1表示栈为空
void init(Stack* s) {
s->top = -1;
}
// 进栈(push)
void push(Stack* s, int value) {
if (s->top >= 99) { // 判满
std::cout << "Stack is full.\n";
return;
}
s->stack[++s->top] = value; // 栈顶加一并入栈
std::cout << "Pushed element: " << value << "\n";
}
// 出栈(pop)
int pop(Stack* s) {
if (s->top == -1) { // 判空
std::cout << "Stack is empty.\n";
return -1; // 返回特殊值表示栈空
}
int popped_value = s->stack[s->top--]; // 减一获取栈顶元素并出栈
std::cout << "Popped element: " << popped_value << "\n";
return popped_value;
}
// 判断栈是否为空
bool isEmpty(Stack* s) {
return s->top == -1;
}
// 判断栈是否已满
bool isFull(Stack* s) {
return s->top == 99;
}
int main() {
Stack myStack;
init(&myStack);
push(&myStack, 1);
push(&myStack, 2);
push(&myStack, 3); // 输出结果
int popped = pop(&myStack); // 输出结果
std::cout << "Is the stack empty? " << (isEmpty(&myStack) ? "Yes" : "No") << "\n";
std::cout << "Is the stack full? " << (isFull(&myStack) ? "Yes" : "No") << "\n";
return 0;
}
```
在这个示例中,当栈满或空时会有相应的提示。完整运行结果会包含几次推入和弹出元素的操作,以及最后检查栈是否为空和满的状态。
阅读全文