这段代码实现了一个基于数组的栈数据结构,提供了入栈(push)、出栈(pop)、获取栈顶元素(peek)、判断栈是否为空(is_empty)和判断栈是否已满(is_full)等操作。在main函数中,先向栈中压入5个元素,然后打印栈顶元素,最后弹出并打印所有元素。
以下是使用C语言实现栈(stack)的代码示例:
#include <stdio.h> #include <stdlib.h> #define MAX_SIZE 100 int stack[MAX_SIZE]; int top = -1; void push(int item); int pop(void); int peek(void); int is_empty(void); int is_full(void); int main() { push(10); push(20); push(30); push(40); push(50); printf("The top element is %d\n", peek()); printf("Pop operation...\n"); while(!is_empty()) { int item = pop(); printf("%d\n", item); } return 0; } void push(int item) { if(is_full()) { printf("Stack Overflow\n"); return; } stack[++top] = item; } int pop(void) { if(is_empty()) { printf("Stack Underflow\n"); exit(EXIT_FAILURE); } return stack[top--]; } int peek(void) { if(is_empty()) { printf("Stack is empty\n"); exit(EXIT_FAILURE); } return stack[top]; } int is_empty(void) { return top == -1; } int is_full(void) { return top == MAX_SIZE - 1; }
在这个c语言实现栈(stack)代码示例中,我们定义了一个栈(stack)结构体,使用数组 stack
来存储栈中的元素。我们也定义了一个整数 top
来表示栈顶的位置,初始值为 -1
,表示栈是空的。
接着,我们定义了几个操作栈的函数。下面是每个函数的解释:
void push(int item)
:将元素item
推入栈中,如果栈已满,则输出 "Stack Overflow"。int pop(void)
:从栈中弹出并返回栈顶元素,如果栈为空,则输出 "Stack Underflow" 并退出程序。int peek(void)
:返回栈顶元素,但不弹出,如果栈为空,则输出 "Stack is empty" 并退出程序。int is_empty(void)
:判断栈是否为空,如果栈为空,则返回1
,否则返回0
。int is_full(void)
:判断栈是否已满,如果栈已满,则返回1
,否则返回0
。
在 main
函数中,我们测试了一些栈操作,先将元素 10、20、30、40 和 50 推入栈中,然后通过 peek
函数查看栈顶元素,最后通过 pop
函数将栈中的元素一个一个弹出并输出。
请注意,当栈中的元素数量超过 MAX_SIZE
时,程序会输出 "Stack Overflow" 并退出程序。当尝试从一个空栈中弹出元素时,程序会输出 "Stack Underflow" 并退出程序。
评论