1.编写一个程序,在自定义函数中完成下列功能并在主函数中进行测试(下列要求中所说的栈均指顺序栈):(1)创建并初始化栈S。(2)判断栈S是否为空。(3)元素入栈,入栈元素:()()[([])]。(4)将栈顶元素出栈、保存到元素e中并输出。(5)销毁栈S。用C语言实现
时间: 2024-10-17 11:07:50 浏览: 51
在C语言中,我们可以使用数组作为栈的数据结构,因为数组下标可以模拟栈的行为。下面是一个简单的示例,展示了如何创建栈并实现所需的功能:
```c
#include <stdio.h>
#define MAX_SIZE 10
// 定义栈结构体
typedef struct {
int data[MAX_SIZE];
int top; // 栈顶索引
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = -1;
}
// 判断栈是否为空
int is_empty(Stack *s) {
return s->top == -1;
}
// 元素入栈
void push(Stack *s, int value) {
if (s->top < MAX_SIZE - 1) {
s->data[++s->top] = value;
printf("Pushed %d onto the stack.\n", value);
} else {
printf("Stack overflow, can't push element.\n");
}
}
// 出栈并保存元素
int pop(Stack *s, int* e) {
if (is_empty(s)) {
printf("Stack is empty, nothing to pop.\n");
return 0;
} else {
*e = s->data[s->top--];
printf("Popped %d from the stack and saved in e.\n", *e);
return 1;
}
}
// 销毁栈
void destroy(Stack *s) {
s->top = -1;
printf("Stack destroyed.\n");
}
int main() {
Stack S;
init(&S);
// 入栈操作
push(&S, '(');
push(&S, ')');
push(&S, '[');
push(&S, ']');
// 出栈并保存
int e;
if (pop(&S, &e)) {
printf("Element after popping: %c\n", e);
}
// 确保栈已清空
while (!is_empty(&S)) {
pop(&S, &e);
}
destroy(&S);
return 0;
}
```
这个程序首先定义了一个栈结构体,并实现了初始化、检查空栈、入栈、出栈和销毁栈的基本操作。在`main()`函数中,我们按照题目要求对栈进行了操作。
阅读全文