用c语言实现顺序栈的基本操作,假设给定的整数栈初始状态为空,栈的最大容量为100。从标准输入中输入一组栈操作,按操作顺序输出出栈元素序列。栈操作:1表示入栈操作,后跟一个整数(不为1、0和-1)为入栈元素;0表示出栈操作;-1表示操作结束
时间: 2024-06-06 19:11:40 浏览: 92
。#include <stdio.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int top; // 栈顶指针,指向栈顶元素的下一个位置
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = 0;
}
// 判断栈是否为空
int is_empty(Stack *s) {
return s->top == 0;
}
// 判断栈是否已满
int is_full(Stack *s) {
return s->top == MAX_SIZE;
}
// 入栈
void push(Stack *s, int x) {
if (is_full(s)) {
printf("Error: stack is full\n");
return;
}
s->data[s->top++] = x;
}
// 出栈
int pop(Stack *s) {
if (is_empty(s)) {
printf("Error: stack is empty\n");
return -1;
}
return s->data[--s->top];
}
int main() {
Stack s;
init(&s);
int op, x;
while (1) {
scanf("%d", &op);
if (op == -1) {
break;
}
if (op == 1) {
scanf("%d", &x);
push(&s, x);
} else if (op == 0) {
printf("%d\n", pop(&s));
}
}
return 0;
}
阅读全文