使用c语言实现栈的基本操作,包括定义栈结构、创建一个栈、判断栈是否为空、判断栈是否已满、将元素压入栈、从栈中弹出元素、获取栈顶元素等操作。
时间: 2023-08-13 21:03:21 浏览: 180
栈 c语言实现
好的,下面是基本的栈操作的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_STACK_SIZE 100 // 定义栈的最大容量
// 定义栈结构体
typedef struct {
int data[MAX_STACK_SIZE]; // 数组存放栈元素
int top; // 栈顶指针
} Stack;
// 创建一个空栈
Stack* createStack() {
Stack* stack = (Stack*) malloc(sizeof(Stack)); // 分配内存
stack->top = -1; // 初始化栈顶指针
return stack;
}
// 判断栈是否为空
int isStackEmpty(Stack* stack) {
return stack->top == -1;
}
// 判断栈是否已满
int isStackFull(Stack* stack) {
return stack->top == MAX_STACK_SIZE - 1;
}
// 将元素压入栈
void push(Stack* stack, int value) {
if (isStackFull(stack)) {
printf("Error: Stack is full!\n");
return;
}
stack->top++;
stack->data[stack->top] = value;
}
// 从栈中弹出元素
int pop(Stack* stack) {
if (isStackEmpty(stack)) {
printf("Error: Stack is empty!\n");
return -1;
}
int value = stack->data[stack->top];
stack->top--;
return value;
}
// 获取栈顶元素
int top(Stack* stack) {
if (isStackEmpty(stack)) {
printf("Error: Stack is empty!\n");
return -1;
}
return stack->data[stack->top];
}
int main() {
Stack* stack = createStack(); // 创建一个栈
// 将元素压入栈
push(stack, 1);
push(stack, 2);
push(stack, 3);
push(stack, 4);
push(stack, 5);
// 获取栈顶元素,并输出
printf("Top element: %d\n", top(stack));
// 从栈中弹出元素,并输出
printf("Pop element: %d\n", pop(stack));
printf("Pop element: %d\n", pop(stack));
// 获取栈顶元素,并输出
printf("Top element: %d\n", top(stack));
return 0;
}
```
以上就是栈的基本操作的C语言实现。其中,`createStack()` 函数用于创建一个空栈;`isStackEmpty()` 函数用于判断栈是否为空;`isStackFull()` 函数用于判断栈是否已满;`push()` 函数用于将元素压入栈;`pop()` 函数用于从栈中弹出元素;`top()` 函数用于获取栈顶元素。
阅读全文