构造一个空的顺序栈并依次将元素(a,b,c,d,e)进行入栈.实现顺序栈的出栈操作。
时间: 2024-12-09 13:18:27 浏览: 10
构造一个空的顺序栈(也称为数组栈),可以先创建一个固定大小的数组,比如初始容量为5。在C语言中,你可以这样做:
```c
#include <stdio.h>
#define MAX_SIZE 5
typedef struct Stack {
int data[MAX_SIZE]; // 存储元素的数组
int top; // 栈顶指针,指向当前栈顶元素的位置
} Stack;
// 初始化空栈
void init(Stack *s) {
s->top = -1;
}
// 入栈操作 (Enqueue)
void push(Stack *s, int item) {
if (s->top == MAX_SIZE - 1) {
printf("Stack overflow.\n");
return;
}
s->data[++s->top] = item;
printf("Pushed %d onto the stack.\n", item);
}
// 出栈操作 (Dequeue)
int pop(Stack *s) {
if (s->top == -1) {
printf("Stack underflow.\n");
return -1; // 返回特殊值表示空栈或错误
}
int item = s->data[s->top];
s->top--;
printf("Popped %d from the stack.\n", item);
return item;
}
int main() {
Stack myStack;
init(&myStack);
push(&myStack, 'a');
push(&myStack, 'b');
push(&myStack, 'c');
push(&myStack, 'd');
push(&myStack, 'e');
while (myStack.top != -1) {
int item = pop(&myStack);
printf("Last popped element: %c\n", item);
}
return 0;
}
```
在这个例子中,我们首先初始化了一个空栈`myStack`,然后依次将'a', 'b', 'c', 'd', 'e'元素压入栈中。每次出栈操作都会打印出弹出的元素,并继续这个过程直到栈为空。
阅读全文