C语言1.实现顺序栈的各种基本运算的算法 编写一个程序sqstack.cpp,实现顺序栈的各种基本运算(假设栈中元素类型ElemType为char)
时间: 2024-12-09 14:18:00 浏览: 12
数据结构c语言版.docx
在C语言中,我们可以使用数组来实现一个简单的顺序栈。这里我会提供一个基本的顺序栈实现,包括初始化、入栈(push)、出栈(pop)、查看栈顶元素(top),以及判断栈是否为空(empty)。假设我们的顺序栈称为`SQStack`。
```c
#include <stdio.h>
#include <stdlib.h>
// 定义栈的最大容量
#define MAX_CAPACITY 50
// 定义顺序栈结构体
typedef struct {
char data[MAX_CAPACITY];
int top;
} SQStack;
// 初始化一个空栈
void init_stack(SQStack *s) {
s->top = -1; // 栈顶指针初始化为-1表示栈为空
}
// 判断栈是否为空
int is_empty(const SQStack *s) {
return s->top == -1;
}
// 入栈操作 (Push)
void push(SQStack *s, char elem) {
if (s->top < MAX_CAPACITY - 1) { // 如果还有空间
s->data[++s->top] = elem; // 把元素放入栈顶并更新栈顶指针
} else {
printf("Stack overflow.\n"); // 栈满提示
}
}
// 出栈操作 (Pop)
char pop(SQStack *s) {
if (is_empty(s)) { // 如果栈为空
printf("Stack underflow.\n"); // 栈空提示
return '\0'; // 返回空字符作为默认值
} else {
return s->data[s->top--]; // 取出栈顶元素,并将栈顶指针减一
}
}
// 查看栈顶元素 (Top)
char get_top(const SQStack *s) {
if (is_empty(s)) {
printf("Stack is empty.\n");
return '\0';
} else {
return s->data[s->top]; // 直接返回栈顶元素
}
}
// 测试栈功能
int main() {
SQStack stack;
init_stack(&stack);
push(&stack, 'A');
push(&stack, 'B');
push(&stack, 'C');
printf("Top element is: %c\n", get_top(&stack));
printf("Popped element: %c\n", pop(&stack));
printf("After popping, top element is: %c\n", get_top(&stack));
return 0;
}
```
这个程序展示了如何通过顺序栈的数据结构实现基本的操作。请注意,在实际应用中,为了防止内存溢出,你可能需要添加动态内存分配的功能,但此处我们保持简单以便理解。
阅读全文