用C语言,请编程实现栈的基本操作,主要包括栈的创建、压栈栈和弹栈等基本操作。
时间: 2024-09-30 16:13:09 浏览: 32
在C语言中,我们可以使用数组或者链表来实现栈。这里我们使用数组作为例子,因为数组更直观且内存连续。下面是一个简单的栈结构体以及实现基本操作的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义栈的数据类型
#define MAX_SIZE 100
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;
}
// 判断栈是否已满
int is_full(Stack *s) {
return s->top == MAX_SIZE - 1;
}
// 入栈(压栈)
void push(Stack *s, int value) {
if (is_full(s)) {
printf("Stack is full.\n");
return;
}
s->data[++s->top] = value;
printf("Pushed %d onto the stack.\n", value);
}
// 出栈(弹栈)
int pop(Stack *s) {
if (is_empty(s)) {
printf("Stack is empty.\n");
return -1;
}
int popped_value = s->data[s->top--];
printf("Popped %d from the stack.\n", popped_value);
return popped_value;
}
// 主函数演示栈的操作
int main() {
Stack my_stack;
init(&my_stack);
push(&my_stack, 1);
push(&my_stack, 2);
push(&my_stack, 3);
printf("Top element is: %d\n", pop(&my_stack)); // 输出 3
return 0;
}
```
在这个例子中,我们首先定义了一个`Stack`结构体,它包含一个整数数组和一个指向栈顶元素的索引。然后实现了初始化、判断栈空和满、入栈和出栈等函数。
阅读全文