阅读量:1
以下是一个简单的 C 语言实现栈的代码示例:
#include <stdio.h> #include <stdbool.h> #define MAX_SIZE 100 // 定义栈结构 typedef struct { int data[MAX_SIZE]; int top; // 栈顶指针 } Stack; // 初始化栈 void initStack(Stack *s) { s->top = -1; } // 判断栈是否为空 bool isEmpty(Stack *s) { return s->top == -1; } // 判断栈是否已满 bool isFull(Stack *s) { return s->top == MAX_SIZE - 1; } // 入栈 void push(Stack *s, int value) { if (isFull(s)) { printf("Stack overflow\n"); return; } s->top++; s->data[s->top] = value; } // 出栈 int pop(Stack *s) { if (isEmpty(s)) { printf("Stack underflow\n"); return -1; } int value = s->data[s->top]; s->top--; return value; } // 获取栈顶元素 int peek(Stack *s) { if (isEmpty(s)) { printf("Stack underflow\n"); return -1; } return s->data[s->top]; } // 打印栈中的元素 void printStack(Stack *s) { if (isEmpty(s)) { printf("Stack is empty\n"); return; } printf("Stack elements: "); for (int i = 0; i <= s->top; i++) { printf("%d ", s->data[i]); } printf("\n"); } int main() { Stack stack; initStack(&stack); push(&stack, 10); push(&stack, 20); push(&stack, 30); printStack(&stack); // 输出:Stack elements: 10 20 30 int poppedValue = pop(&stack); printf("Popped value: %d\n", poppedValue); // 输出:Popped value: 30 int topValue = peek(&stack); printf("Top value: %d\n", topValue); // 输出:Top value: 20 return 0; }
上述代码中,首先定义了一个结构体 Stack
,包含一个数组 data
作为栈的存储空间,以及一个整型变量 top
作为栈顶指针。
然后,定义了一些栈的操作函数:initStack
用于初始化栈,isEmpty
和 isFull
用于判断栈是否为空或已满,push
用于入栈,pop
用于出栈,peek
用于获取栈顶元素,以及 printStack
用于打印栈中的元素。
在 main
函数中,首先通过调用 initStack
初始化了一个栈 stack
,然后通过调用 push
将元素压入栈中,再通过调用 printStack
打印栈中的元素。
接着,通过调用 pop
函数将栈顶元素出栈,并打印出栈的元素值。
最后,通过调用 peek
函数获取栈顶元素值,并打印栈顶元素。