阅读量:0
C语言中的栈是一种后进先出(LIFO)的数据结构,通常用于存储临时变量、函数调用等。在C语言中,栈通常是通过数组或链表来实现的。
操作栈的基本操作包括:
- 压栈(Push):将数据压入栈顶。
- 弹栈(Pop):从栈顶弹出一个数据。
- 获取栈顶元素(Top):获取栈顶的数据,但不弹出。
- 判断栈是否为空(isEmpty):判断栈是否为空。
- 获取栈的大小(Size):获取栈中元素的个数。
以下是一个使用数组实现栈的示例代码:
#include <stdio.h> #include <stdbool.h> #define MAX_SIZE 100 typedef struct { int data[MAX_SIZE]; int top; } Stack; void init(Stack *s) { s->top = -1; } void push(Stack *s, int value) { if (s->top < MAX_SIZE - 1) { s->data[++s->top] = value; } else { printf("Stack overflow!\n"); } } int pop(Stack *s) { if (s->top >= 0) { return s->data[s->top--]; } else { printf("Stack is empty!\n"); return -1; } } int top(Stack *s) { if (s->top >= 0) { return s->data[s->top]; } else { printf("Stack is empty!\n"); return -1; } } bool isEmpty(Stack *s) { return s->top == -1; } int size(Stack *s) { return s->top + 1; } int main() { Stack stack; init(&stack); push(&stack, 1); push(&stack, 2); push(&stack, 3); printf("Top element: %d\n", top(&stack)); while (!isEmpty(&stack)) { printf("%d ", pop(&stack)); } printf("\n"); return 0; }
在这个示例代码中,我们定义了一个栈结构体Stack
,并实现了基本的压栈、弹栈、获取栈顶元素、判断栈是否为空和获取栈的大小等操作。我们可以通过调用这些函数来操作这个栈。