c语言建立顺序栈,数据先进栈 ,出栈 2 次,数据再进栈,再全部出队,输出每次入栈, 出栈序列。
时间: 2023-09-26 16:13:38 浏览: 80
给定进栈顺序,判断一个序列是否为正确的出栈顺序
4星 · 用户满意度95%
以下是实现该功能的 C 代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int top;
} SqStack;
void initStack(SqStack *s) {
s->top = -1;
}
int isEmpty(SqStack *s) {
return s->top == -1;
}
int isFull(SqStack *s) {
return s->top == MAX_SIZE - 1;
}
int push(SqStack *s, int x) {
if (isFull(s)) {
return 0;
}
s->top++;
s->data[s->top] = x;
return 1;
}
int pop(SqStack *s, int *x) {
if (isEmpty(s)) {
return 0;
}
*x = s->data[s->top];
s->top--;
return 1;
}
int main() {
SqStack s;
initStack(&s);
int a, b, c;
printf("输入第一个进栈元素:");
scanf("%d", &a);
printf("输入第二个进栈元素:");
scanf("%d", &b);
printf("将 %d 和 %d 依次入栈\n", a, b);
push(&s, a);
push(&s, b);
printf("出栈两次\n");
pop(&s, &c);
printf("%d 出栈\n", c);
pop(&s, &c);
printf("%d 出栈\n", c);
printf("输入第三个进栈元素:");
scanf("%d", &a);
printf("将 %d 再次入栈\n", a);
push(&s, a);
printf("依次出栈,输出每次入栈、出栈序列:\n");
while (!isEmpty(&s)) {
pop(&s, &c);
printf("%d 出栈\n", c);
}
return 0;
}
```
运行结果示例:
```
输入第一个进栈元素:1
输入第二个进栈元素:2
将 1 和 2 依次入栈
出栈两次
2 出栈
1 出栈
输入第三个进栈元素:3
将 3 再次入栈
依次出栈,输出每次入栈、出栈序列:
3 出栈
```
阅读全文