用c语言编写顺序栈的初始化,判断栈空否,入栈和出栈
时间: 2023-05-28 17:07:01 浏览: 151
顺序栈是一种线性数据结构,它具有后进先出(LIFO)的特点。顺序栈的实现需要一个数组和一个指向栈顶元素的指针。以下是顺序栈的初始化、判断栈空、入栈和出栈操作的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct Stack {
int data[MAX_SIZE];
int top;
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = -1;
}
// 判断栈空
int is_empty(Stack *s) {
return s->top == -1;
}
// 入栈
void push(Stack *s, int x) {
if (s->top == MAX_SIZE - 1) {
printf("Error: stack overflow\n");
exit(1);
}
s->data[++s->top] = x;
}
// 出栈
int pop(Stack *s) {
if (is_empty(s)) {
printf("Error: stack underflow\n");
exit(1);
}
return s->data[s->top--];
}
int main() {
Stack s;
init(&s);
push(&s, 1);
push(&s, 2);
push(&s, 3);
while (!is_empty(&s)) {
printf("%d ", pop(&s));
}
printf("\n");
return 0;
}
```
在上面的代码中,我们使用了一个结构体来表示栈,其中包含一个整型数组和一个指向栈顶元素的整型指针。在初始化操作中,我们将栈顶指针初始化为-1,表示栈为空。在入栈操作中,我们首先判断栈是否已满,如果满了则输出错误信息并退出程序,否则将元素插入到栈顶。在出栈操作中,我们首先判断栈是否为空,如果为空则输出错误信息并退出程序,否则弹出栈顶元素并返回。在主函数中,我们初始化一个栈,然后依次将元素1、2、3入栈,最后将栈中的元素依次弹出并输出。
阅读全文