c语言实现栈,实现push和pop
时间: 2024-11-27 16:20:16 浏览: 12
在C语言中,栈是一种具有特定顺序插入和删除元素的数据结构,通常是后进先出(LIFO)的方式。这里展示了一个简单的栈结构和基本的操作,包括`push`(入栈)和`pop`(出栈):
```c
// 定义栈结构
typedef struct Stack {
int* data; // 存储元素的数组
int top; // 栈顶指针
int size; // 栈的容量
} Stack;
// 初始化栈
void initStack(Stack* s, int capacity) {
s->data = (int*)malloc(capacity * sizeof(int));
s->top = -1;
s->size = capacity;
}
// 压栈(push)操作
void push(Stack* s, int item) {
if (s->top == s->size - 1) {
printf("Stack overflow!\n"); // 如果已满,无法再压入
return;
}
s->data[++s->top] = item;
}
// 弹栈(pop)操作
int pop(Stack* s) {
if (s->top == -1) {
printf("Stack underflow!\n"); // 如果为空,无法弹出
return -1;
}
return s->data[s->top--];
}
```
在这个示例中,`initStack`用于创建一个新的栈,`push`函数用于将一个新元素添加到栈顶,而`pop`函数则返回并移除栈顶的元素。如果试图在空栈上执行`pop`或尝试超出栈容量的`push`,程序会打印错误消息。
阅读全文