#include <stdio.h> #include <stdlib.h> #define MAX_SIZE 100 typedef struct { int data[MAX_SIZE]; // 用于存储栈中的元素 int top; // 栈顶指针 } Stack; // 初始化栈 void initStack(Stack *stack) { stack->top = -1; // 将栈顶指针初始化为-1,表示栈为空 } // 判断栈是否为空 int isEmpty(Stack *stack) { return stack->top == -1; } // 判断栈是否已满 int isFull(Stack *stack) { return stack->top == MAX_SIZE - 1; } // 入栈 void push(Stack *stack, int value) { if (isFull(stack)) { printf("栈已满,无法入栈\n"); return; } stack->top++; // 栈顶指针加1 stack->data[stack->top] = value; // 将元素存入栈中 } // 出栈 int pop(Stack *stack) { if (isEmpty(stack)) { printf("栈为空,无法出栈\n"); return -1; } int value = stack->data[stack->top]; // 获取栈顶元素的值 stack->top--; // 栈顶指针减1 return value; // 返回出栈的元素值 } // 获取栈顶元素 int getTop(Stack *stack) { if (isEmpty(stack)) { printf("栈为空,无法获取栈顶元素\n"); return -1; } return stack->data[stack->top]; // 返回栈顶元素的值 } int main() { Stack stack; initStack(&stack); push(&stack, 1); push(&stack, 2); push(&stack, 3); printf("栈顶元素:%d\n", getTop(&stack)); printf("出栈元素:%d\n", pop(&stack)); printf("出栈元素:%d\n", pop(&stack)); printf("栈顶元素:%d\n", getTop(&stack)); return 0; }
上述代码实现了一个使用数组作为存储空间的栈,包括了初始化栈、判断栈是否为空、判断栈是否已满、入栈、出栈、获取栈顶元素等操作。在main
函数中,我们对栈进行了简单的测试,入栈了3个元素后,依次进行了出栈和获取栈顶元素的操作。