如何用C语言构建栈
时间: 2024-02-12 21:02:37 浏览: 78
栈链表_c语言/栈链表_
在C语言中,可以使用数组来实现栈的基本功能。以下是一个简单的栈实现示例:
```c
#include <stdio.h>
#define MAXSIZE 100
// 定义栈结构
typedef struct {
int data[MAXSIZE];
int top; // 栈顶指针
} Stack;
// 初始化栈
void initStack(Stack *s) {
s->top = -1;
}
// 判断栈是否为空
int isEmpty(Stack *s) {
return s->top == -1;
}
// 判断栈是否已满
int isFull(Stack *s) {
return s->top == MAXSIZE - 1;
}
// 入栈
void push(Stack *s, int item) {
if (isFull(s)) {
printf("Stack overflow!\n");
return;
}
s->data[++s->top] = item;
}
// 出栈
int pop(Stack *s) {
if (isEmpty(s)) {
printf("Stack underflow!\n");
return -1;
}
return s->data[s->top--];
}
// 获取栈顶元素
int peek(Stack *s) {
if (isEmpty(s)) {
printf("Stack is empty!\n");
return -1;
}
return s->data[s->top];
}
int main() {
Stack s;
initStack(&s);
push(&s, 1);
push(&s, 2);
push(&s, 3);
printf("Top element: %d\n", peek(&s));
pop(&s);
printf("Top element: %d\n", peek(&s));
pop(&s);
printf("Top element: %d\n", peek(&s));
pop(&s);
printf("Is stack empty? %d\n", isEmpty(&s));
return 0;
}
```
这个栈实现使用了一个结构体,包含一个整型数组和一个指向栈顶元素的指针。具体的栈操作包括初始化栈、判断栈是否为空或已满、入栈、出栈和获取栈顶元素。在主函数中,我们可以看到栈的基本操作过程。
阅读全文