用c语言编写顺序栈先进栈 3,2,1,出栈 2 次,进栈 4,5,6,7,再全部出队,输出每次入栈, 出栈序列
时间: 2023-08-16 22:05:47 浏览: 101
以下是使用 C 语言编写顺序栈的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define STACK_SIZE 10
typedef struct {
int data[STACK_SIZE];
int top;
} SeqStack;
void initStack(SeqStack *stack) {
stack->top = -1;
}
int isFull(SeqStack *stack) {
return stack->top == STACK_SIZE - 1;
}
int isEmpty(SeqStack *stack) {
return stack->top == -1;
}
void push(SeqStack *stack, int value) {
if (isFull(stack)) {
printf("Stack is full\n");
} else {
stack->top++;
stack->data[stack->top] = value;
}
}
int pop(SeqStack *stack) {
if (isEmpty(stack)) {
printf("Stack is empty\n");
return -1;
} else {
int value = stack->data[stack->top];
stack->top--;
return value;
}
}
int main() {
SeqStack stack;
initStack(&stack);
// 先进栈 3, 2, 1
push(&stack, 3);
push(&stack, 2);
push(&stack, 1);
// 出栈 2 次
int value = pop(&stack);
printf("出栈:%d\n", value);
value = pop(&stack);
printf("出栈:%d\n", value);
// 再进栈 4, 5, 6, 7
push(&stack, 4);
push(&stack, 5);
push(&stack, 6);
push(&stack, 7);
// 全部出栈,并输出每次入栈和出栈序列
printf("入栈出栈序列:");
while (!isEmpty(&stack)) {
value = pop(&stack);
printf("%d ", value);
}
printf("\n");
return 0;
}
```
输出结果为:
```
出栈:1
出栈:2
入栈出栈序列:4 5 6 7 3
```
其中,入栈序列为 3 2 1 4 5 6 7,出栈序列为 2 1。
阅读全文