C语言实现栈的基本操作

使用C语言实现栈的基本操作的示例代码:

#include 

#define MAX_SIZE 10

int stack[MAX_SIZE];
int top = -1;

void push(int item) {
    if (top >= MAX_SIZE - 1) {   // 检查是否栈满
        printf("Stack Overflow\n");
    } else {
        top++;               // 栈顶指针加 1
        stack[top] = item;   // 将元素压入栈
    }
}

int pop() {
    int item;
    if (top < 0) {       // 检查是否栈空
        printf("Stack Underflow\n");
        return -1;       // 返回一个无效值
    } else {
        item = stack[top];     // 取出栈顶元素
        top--;             // 栈顶指针减 1
        return item;       // 返回取出的元素
    }
}

int peek() {
    if (top < 0) {     // 检查是否栈空
        printf("Stack is Empty\n");
        return -1;     // 返回一个无效值
    } else {
        return stack[top];   // 返回栈顶元素
    }
}

int main() {
    push(10);
    push(20);
    push(30);
    
    printf("Peek: %d\n", peek());    // 输出栈顶元素
    
    printf("Pop: %d\n", pop());
    printf("Pop: %d\n", pop());
    printf("Pop: %d\n", pop());
    printf("Pop: %d\n", pop());     // 输出栈空提示
    
    return 0;
}

输出结果为:

Peek: 30
Pop: 30
Pop: 20
Pop: 10
Stack is Empty
Pop: -1

在本示例中,我们定义了一个整型数组 stack 作为栈的存储空间,定义变量 top 表示栈顶指针的位置,初值为 -1 表示栈为空。 push() 函数将元素压入栈中,pop() 函数将元素从栈中弹出, peek() 函数返回栈顶元素。在每个函数中,我们都检查了栈是否已满或已空,以避免出现数组越界错误。在 main() 函数中,我们演示了如何使用这些函数。

你可能感兴趣的:(编程算法,c语言,数据结构,算法,堆栈)