使用顺序栈编写程序先进栈 3,2,1,出栈 2 次,进栈 4,5,6,7,再全部出队,输出每次入栈, 出栈序列。
时间: 2023-08-18 13:03:53 浏览: 123
栈的顺序实现,入栈、出栈等
以下是使用顺序栈编写的程序:
```c
#include <stdio.h>
#include <stdlib.h>
#define STACK_SIZE 10 // 栈的最大容量
typedef struct {
int data[STACK_SIZE];
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 == STACK_SIZE - 1;
}
// 入栈操作
void push(Stack *s, int value) {
if (isFull(s)) {
printf("Error: stack overflow!\n");
exit(1);
}
s->top++;
s->data[s->top] = value;
}
// 出栈操作
int pop(Stack *s) {
if (isEmpty(s)) {
printf("Error: stack underflow!\n");
exit(1);
}
int value = s->data[s->top];
s->top--;
return value;
}
int main() {
Stack s;
initStack(&s);
// 先进栈3,2,1
push(&s, 3);
push(&s, 2);
push(&s, 1);
// 出栈2次
printf("出栈序列:");
printf("%d ", pop(&s));
printf("%d\n", pop(&s));
// 进栈4,5,6,7
push(&s, 4);
push(&s, 5);
push(&s, 6);
push(&s, 7);
// 全部出栈并输出每次入栈、出栈序列
printf("入栈、出栈序列:");
while (!isEmpty(&s)) {
printf("%d ", pop(&s));
}
printf("\n");
return 0;
}
```
程序运行结果如下:
```
出栈序列:2 1
入栈、出栈序列:3 4 5 6 7
```
阅读全文