栈的初始化,入栈、出栈、判断栈空、判断栈满、取栈顶等基本操作算法的代码
时间: 2023-10-16 11:14:31 浏览: 66
[计算机]数据结构与算法问题分析及源代码之栈操作.doc
栈的初始化、入栈、出栈、判断栈空、判断栈满、取栈顶等基本操作算法的代码可以如下实现:
```
#define MAX_SIZE 100 // 假设栈的最大容量为100
typedef struct {
int data[MAX_SIZE]; // 栈的数据存储数组
int top; // 栈指针,指向栈顶元素的下一个位置
} Stack;
// 初始化栈
void initStack(Stack* s) {
s->top = 0;
}
// 入栈
int push(Stack* s, int x) {
if (s->top == MAX_SIZE) // 栈满,无法入栈
return 0;
s->data[s->top++] = x; // 新元素入栈
return 1;
}
// 出栈
int pop(Stack* s) {
if (s->top == 0) // 栈空,无法出栈
return 0;
s->top--; // 栈顶元素出栈
return 1;
}
// 判断栈是否为空
int isEmpty(Stack* s) {
return s->top == 0; // 栈顶指针为0,表示栈空
}
// 判断栈是否已满
int isFull(Stack* s) {
return s->top == MAX_SIZE; // 栈顶指针已达到最大容量,表示栈已满
}
// 取栈顶元素
int top(Stack* s, int* x) {
if (s->top == 0) // 栈空,无法取栈顶元素
return 0;
*x = s->data[s->top - 1]; // 取出栈顶元素
return 1;
}
```
阅读全文