用c语言编写程序,实现顺序栈的基本运算,并在此基础上设计一个主程序并完成如下功能: (1)初始化栈s; (2)判断栈s是否非空; (3)依次进栈元素A,B,C,D,E; (4)输出栈内元素个数; (5)输出栈顶元素; (6)输出出栈序列;
时间: 2024-10-20 10:02:44 浏览: 68
用c语言编写表达式求值
在C语言中,我们可以使用数组来实现一个简单的顺序栈结构,包括push(入栈)、pop(出栈)等基本操作。下面是一个简单的顺序栈实现示例:
```c
#include <stdio.h>
#define MAX_SIZE 50
typedef struct {
int top;
int data[MAX_SIZE];
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = -1;
}
// 判断栈是否为空
int isEmpty(Stack *s) {
return s->top == -1;
}
// 入栈
void push(Stack *s, int value) {
if (s->top >= MAX_SIZE - 1) {
printf("Stack overflow!\n");
return;
}
s->top++;
s->data[s->top] = value;
}
// 出栈并返回顶部元素
int pop(Stack *s) {
if (isEmpty(s)) {
printf("Stack underflow!\n");
return -1;
}
int top_value = s->data[s->top];
s->top--;
return top_value;
}
// 输出栈内元素个数
void printSize(Stack *s) {
printf("Stack size: %d\n", s->top + 1);
}
// 输出栈顶元素
void printTop(Stack *s) {
if (!isEmpty(s)) {
printf("Stack top element: %d\n", s->data[s->top]);
} else {
printf("Stack is empty.\n");
}
}
// 出栈序列(弹出所有元素)
void outputSequence(Stack *s) {
while (!isEmpty(s)) {
printf("%d ", pop(s));
}
printf("\n");
}
int main() {
Stack s;
init(&s);
// 进栈元素
push(&s, 'A');
push(&s, 'B');
push(&s, 'C');
push(&s, 'D');
push(&s, 'E');
// 输出栈内元素个数
printSize(&s);
// 输出栈顶元素
printTop(&s);
// 输出出栈序列
outputSequence(&s);
return 0;
}
```
在这个例子中,我们首先定义了一个顺序栈结构,然后实现了初始化、判断栈空、入栈、出栈以及一些辅助函数。在`main()`函数中展示了如何使用这些操作。
阅读全文