如何创建一个栈c语言
时间: 2023-11-07 17:07:42 浏览: 31
创建一个栈可以通过定义一个结构体和一些基本操作函数来实现。以下是一个简单的栈的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int top;
} Stack;
void initStack(Stack *stack) {
stack->top = -1;
}
int isFull(Stack *stack) {
if (stack->top == MAXSIZE - 1) {
return 1;
} else {
return 0;
}
}
int isEmpty(Stack *stack) {
if (stack->top == -1) {
return 1;
} else {
return 0;
}
}
void push(Stack *stack, int value) {
if (isFull(stack)) {
printf("Stack is full\n");
} else {
stack->top++;
stack->data[stack->top] = value;
}
}
int pop(Stack *stack) {
if (isEmpty(stack)) {
printf("Stack is empty\n");
return -1;
} else {
int value = stack->data[stack->top];
stack->top--;
return value;
}
}
int main() {
Stack stack;
initStack(&stack);
push(&stack, 1);
push(&stack, 2);
push(&stack, 3);
printf("%d\n", pop(&stack));
printf("%d\n", pop(&stack));
printf("%d\n", pop(&stack));
printf("%d\n", pop(&stack));
return 0;
}
```
在这个示例中,定义了一个结构体 Stack,包含一个数组 data 和一个指向栈顶的指针 top。初始化栈时,将 top 设置为 -1。isFull 和 isEmpty 函数分别用于检查栈是否已满或为空。push 和 pop 函数分别用于向栈中添加元素和从栈中移除元素。在主函数中,首先初始化 stack,然后将元素依次压入栈中,再依次弹出并输出元素的值。