用C语言 实现1.初始化栈 2.出栈 3.入栈 4.取栈顶元素在页面输入相应数字 进行相应操作 写出完整代码
时间: 2024-09-27 18:08:06 浏览: 40
在C语言中,我们可以使用数组来模拟一个简单的栈结构,这里我会提供一个基于数组的栈实现,包括初始化、出栈、入栈和获取栈顶元素的操作。假设栈的最大容量为MAX_SIZE。
```c
#include <stdio.h>
#define MAX_SIZE 10
#define IS_EMPTY stack[0] == NULL
#define OVERFLOW stack_top >= MAX_SIZE
typedef struct {
int data[MAX_SIZE];
int top;
} Stack;
// 初始化栈
void init(Stack *stack) {
stack->top = -1;
}
// 入栈操作
void push(Stack *stack, int value) {
if (OVERFLOW) {
printf("栈已满,无法入栈。\n");
return;
}
stack->data[++stack->top] = value;
printf("元素 %d 入栈。\n", value);
}
// 出栈操作
int pop(Stack *stack) {
if (IS_EMPTY) {
printf("栈为空,无法出栈。\n");
return -1;
}
int top_value = stack->data[stack->top--];
printf("栈顶元素 %d 出栈。\n", top_value);
return top_value;
}
// 取栈顶元素
int peek(Stack *stack) {
if (IS_EMPTY) {
printf("栈为空,无法查看栈顶元素。\n");
return -1;
}
return stack->data[stack->top];
}
int main() {
Stack my_stack;
init(&my_stack);
// 测试操作
push(&my_stack, 1);
push(&my_stack, 2);
push(&my_stack, 3);
// 查看栈顶元素
int top_element = peek(&my_stack);
if (top_element != -1) {
printf("当前栈顶元素是 %d。\n", top_element);
}
// 出栈操作
int popped_value = pop(&my_stack);
if (popped_value != -1) {
printf("刚刚出栈的元素是 %d。\n", popped_value);
}
return 0;
}
```
这个代码首先定义了一个栈结构体,包含了数据数组和栈顶指针。然后实现了初始化、入栈、出栈以及查看栈顶元素的功能。在`main`函数中,我们对栈进行了几个基本操作的演示。注意这个实现是线性的,不适合处理大数据量,如果需要更高效的数据结构,建议使用链表或其他动态数据结构。
阅读全文