用C语言编写一个程序实现顺序栈的各种基本运算。 实验步骤: 1. 初始化顺序栈 2. 插入元素 3. 删除栈顶元素 4. 取栈顶元素 5. 遍历顺序栈 6. 置空顺序栈
时间: 2024-10-09 16:07:19 浏览: 15
在C语言中,我们可以使用数组作为基础结构来实现一个简单的顺序栈。这里是一个示例程序,展示了如何完成你提到的实验步骤:
```c
#include <stdio.h>
#define MAX_SIZE 10
typedef struct {
int stack[MAX_SIZE];
int top;
} Stack;
// 初始化顺序栈
void init(Stack *s) {
s->top = -1;
}
// 判断是否栈满
int is_full(Stack *s) {
return s->top == MAX_SIZE - 1;
}
// 判断是否栈空
int is_empty(Stack *s) {
return s->top == -1;
}
// 插入元素(入栈)
void push(Stack *s, int value) {
if (is_full(s)) {
printf("Stack is full!\n");
return;
}
s->stack[++s->top] = value;
printf("Pushed %d onto the stack.\n", value);
}
// 删除栈顶元素(出栈)
void pop(Stack *s) {
if (is_empty(s)) {
printf("Stack is empty!\n");
return;
}
s->top--;
printf("Popped %d from the stack.\n", s->stack[s->top + 1]);
}
// 取栈顶元素但不删除(查看栈顶元素)
int peek(Stack *s) {
if (is_empty(s)) {
printf("Stack is empty.\n");
return -1; // 返回特殊值表示栈空
}
return s->stack[s->top];
}
// 遍历顺序栈并打印所有元素
void traverse(Stack *s) {
if (is_empty(s)) {
printf("Stack is empty.\n");
return;
}
printf("Stack elements: ");
for (int i = 0; i <= s->top; i++) {
printf("%d ", s->stack[i]);
}
printf("\n");
}
// 置空顺序栈
void clear(Stack *s) {
s->top = -1;
printf("Stack cleared.\n");
}
int main() {
Stack myStack;
init(&myStack);
// 使用以上函数操作栈...
return 0;
}
```