用简单的c语言构建栈并入栈出栈
时间: 2024-10-17 21:06:40 浏览: 37
ConsoleApplication5_keyf3s_C++_
在C语言中,我们可以使用数组或链表来构建一个基本的栈(Stack),它支持“先进后出”(Last In First Out, LIFO)的数据结构特性。这里我们以数组为例,展示如何实现栈的基本操作:
```c
#include <stdio.h>
#define MAX_SIZE 10
// 定义栈结构体
typedef struct {
int data[MAX_SIZE]; // 存储数据
int top; // 栈顶指针
} Stack;
// 初始化栈
void init(Stack* s) {
s->top = -1;
}
// 判断栈是否为空
int isEmpty(Stack* s) {
return (s->top == -1);
}
// 将元素压入栈
void push(Stack* s, int value) {
if (isEmpty(s)) {
s->top = 0;
} else {
s->top++;
}
s->data[s->top] = value;
}
// 从栈顶弹出元素
int pop(Stack* s) {
if (isEmpty(s)) {
printf("Error: Stack is empty.\n");
return -1; // 返回错误代码
} else {
int popped_value = s->data[s->top];
s->top--;
return popped_value;
}
}
// 主函数示例
int main() {
Stack myStack;
init(&myStack);
push(&myStack, 1);
push(&myStack, 2);
push(&myStack, 3);
while (!isEmpty(&myStack)) {
int value = pop(&myStack);
printf("Popped value: %d\n", value);
}
return 0;
}
```
在这个例子中,`push()` 函数用于将元素添加到栈顶,`pop()` 函数用于移除并返回栈顶的元素。注意,这个栈的大小固定在MAX_SIZE,如果需要动态扩容,可以考虑使用链表实现。
阅读全文