C语言构造一个顺序栈并完成以下操作。 (1)初始化InitStack(
时间: 2024-12-14 20:25:05 浏览: 4
C语言 栈的表示和实现详细介绍
在C语言中,我们可以使用数组或动态内存分配来构建一个简单的顺序栈。这里是一个基本的顺序栈实现,包括初始化、入栈、出栈以及检查栈是否为空的操作:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义栈的最大容量
#define MAX_SIZE 50
// 定义栈结构体
typedef struct {
int data[MAX_SIZE]; // 存储数据的数组
int top; // 栈顶指针
} Stack;
// 初始化栈
void InitStack(Stack *stack) {
stack->top = -1; // 初始化栈顶为-1表示空栈
}
// 判断栈是否为空
int IsEmpty(Stack *stack) {
return stack->top == -1;
}
// 入栈操作
void Push(Stack *stack, int value) {
if (stack->top < MAX_SIZE - 1) { // 避免溢出
stack->data[++stack->top] = value;
} else {
printf("Stack overflow!\n");
}
}
// 出栈操作
int Pop(Stack *stack) {
if (!IsEmpty(stack)) {
return stack->data[stack->top--]; // 减小栈顶指针并返回栈顶元素
} else {
printf("Stack underflow!\n");
return -1; // 返回错误值
}
}
int main() {
Stack s;
InitStack(&s);
// 示例操作
Push(&s, 1);
Push(&s, 2);
Push(&s, 3);
while (!IsEmpty(&s)) {
int popped = Pop(&s);
printf("Popped element: %d\n", popped);
}
return 0;
}
```
阅读全文