c语言实现堆栈的初始化,压栈,出栈,判空操作
时间: 2023-07-13 12:05:20 浏览: 67
堆栈(Stack)是一种线性数据结构,具有“后进先出”的特点,可以使用数组或链表来实现。下面是使用数组实现堆栈的初始化、压栈、出栈和判空操作的C语言代码:
```c
#include <stdio.h>
#define MAXSIZE 100 // 定义栈的最大长度
typedef struct {
int data[MAXSIZE]; // 存储元素的数组
int top; // 栈顶指针
} Stack;
// 初始化堆栈
void InitStack(Stack *S) {
S->top = -1; // 栈顶指针初始化为-1
}
// 判断堆栈是否为空
int IsEmpty(Stack *S) {
if (S->top == -1) {
return 1; // 栈为空
} else {
return 0; // 栈不为空
}
}
// 压栈操作
void Push(Stack *S, int x) {
if (S->top == MAXSIZE - 1) {
printf("栈已满,无法插入元素!\n");
return;
}
S->data[++S->top] = x;
}
// 出栈操作
int Pop(Stack *S) {
if (S->top == -1) {
printf("栈已空,无法删除元素!\n");
return -1;
}
return S->data[S->top--];
}
```
使用方法:
```c
int main() {
Stack S;
InitStack(&S); // 初始化堆栈
Push(&S, 1); // 压入元素1
Push(&S, 2); // 压入元素2
int x = Pop(&S); // 出栈,x的值为2
printf("%d\n", x);
x = Pop(&S); // 出栈,x的值为1
printf("%d\n", x);
x = Pop(&S); // 栈已空,无法删除元素!
return 0;
}
```