C语言中的栈是一种后进先出(LIFO)的数据结构,通常用于存储临时变量、函数调用等。在C语言中,栈通常是通过数组或链表来实现的。
操作栈的基本操作包括:
以下是一个使用数组实现栈的示例代码:
#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
,并实现了基本的压栈、弹栈、获取栈顶元素、判断栈是否为空和获取栈的大小等操作。我们可以通过调用这些函数来操作这个栈。