1. 编写一个程序实现顺序栈的各种基本运算 (1)初始化栈 (2)依次进栈元素a、b、c、d、e (3)判断栈是否为空 (4)输出出栈序列 (5)释放栈
时间: 2024-01-21 12:02:16 浏览: 114
好的,这里是使用 C 语言编写的顺序栈的基本运算:
```
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 5
typedef struct {
int data[MAX_SIZE];
int top;
} Stack;
void initStack(Stack *s) {
s->top = -1;
}
int isStackEmpty(Stack *s) {
return s->top == -1;
}
int isStackFull(Stack *s) {
return s->top == MAX_SIZE - 1;
}
void push(Stack *s, int element) {
if (isStackFull(s)) {
printf("Stack is full\n");
return;
}
s->top++;
s->data[s->top] = element;
}
int pop(Stack *s) {
if (isStackEmpty(s)) {
printf("Stack is empty\n");
return -1;
}
int element = s->data[s->top];
s->top--;
return element;
}
void printStack(Stack *s) {
printf("Stack: ");
for (int i = s->top; i >= 0; i--) {
printf("%d ", s->data[i]);
}
printf("\n");
}
void releaseStack(Stack *s) {
free(s);
}
int main() {
Stack *s = (Stack*) malloc(sizeof(Stack));
initStack(s);
// push elements
push(s, 'a');
push(s, 'b');
push(s, 'c');
push(s, 'd');
push(s, 'e');
// check if stack is empty
printf("Is stack empty? %d\n", isStackEmpty(s));
// print out stack sequence
printf("Out stack sequence: ");
while (!isStackEmpty(s)) {
printf("%c ", pop(s));
}
printf("\n");
// release stack
releaseStack(s);
return 0;
}
```
在这个程序中,我们定义了一个 `Stack` 结构体,包含了一个整型数组 `data` 和一个整型变量 `top`,其中 `top` 表示栈顶元素的下标。我们可以通过调用 `initStack` 函数来初始化栈,通过 `push` 函数来进栈,通过 `pop` 函数来出栈,通过 `isStackEmpty` 函数和 `isStackFull` 函数来判断栈是否为空或已满,通过 `printStack` 函数来打印栈的元素,通过 `releaseStack` 函数来释放栈所占用的内存。
阅读全文