c语言实现栈(stack)代码示例及详细说明

这段代码实现了一个基于数组的栈数据结构,提供了入栈(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" 并退出程序。

 
  • c语言stack代码