用C语言实现顺序栈的可视化函数并在主函数中调用
时间: 2024-10-16 19:14:07 浏览: 16
在C语言中,我们可以使用结构体和数组来实现一个简单的顺序栈。为了可视化,我们通常会在插入和删除元素时打印出操作以及当前栈的状态。下面是一个基础的顺序栈实现示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义栈结构体
typedef struct {
int* data; // 存储数据的数组
int top; // 栈顶指针
int capacity; // 栈的最大容量
} Stack;
// 初始化栈
Stack* createStack(int capacity) {
Stack* stack = (Stack*)malloc(sizeof(Stack));
stack->data = malloc(capacity * sizeof(int));
stack->top = -1;
stack->capacity = capacity;
return stack;
}
// 判断栈是否为空
int isEmpty(Stack* stack) {
return stack->top == -1;
}
// 判断栈是否已满
int isFull(Stack* stack) {
return stack->top == stack->capacity - 1;
}
// 入栈操作
void push(Stack* stack, int value) {
if (isFull(stack)) {
printf("Stack is full.\n");
return;
}
stack->data[++stack->top] = value;
printf("Pushed %d onto the stack.\n", value);
}
// 出栈操作
int pop(Stack* stack) {
if (isEmpty(stack)) {
printf("Stack is empty.\n");
return -1; // 返回错误码
}
int popped_value = stack->data[stack->top--];
printf("Popped %d from the stack.\n", popped_value);
return popped_value;
}
// 主函数示例
int main() {
Stack* myStack = createStack(5); // 创建一个容量为5的栈
push(myStack, 10);
push(myStack, 20);
push(myStack, 30);
while (!isEmpty(myStack)) {
int value = pop(myStack);
// 在这里可以处理返回值或进行其他操作
}
free(myStack->data);
free(myStack);
return 0;
}
```
在这个例子中,`push`和`pop`函数分别用于将元素入栈和出栈,并在操作后打印状态。主函数展示了如何创建栈、添加元素并循环地从栈中取出直到栈空。
阅读全文