stack的c语言代码
时间: 2023-10-13 07:04:12 浏览: 36
以下是一个简单的堆栈(stack)的 C 语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 定义堆栈最大容量
// 堆栈结构体定义
struct Stack {
int top; // 标记栈顶位置
int data[MAXSIZE]; // 数据数组
};
// 初始化堆栈
void initStack(struct Stack *s) {
s->top = -1; // 初始化栈顶位置为-1
}
// 判断堆栈是否为空
int isEmpty(struct Stack *s) {
return s->top == -1; // 栈顶位置为-1表示为空
}
// 判断堆栈是否已满
int isFull(struct Stack *s) {
return s->top == MAXSIZE - 1; // 栈顶位置为 MAXSIZE-1 表示已满
}
// 压入数据
int push(struct Stack *s, int x) {
if (isFull(s)) { // 如果堆栈已满则无法压入数据
printf("The stack is full.\n");
return 0;
} else {
s->data[++s->top] = x; // 栈顶位置加 1 并将数据压入堆栈
return 1;
}
}
// 弹出数据
int pop(struct Stack *s) {
if (isEmpty(s)) { // 如果堆栈为空则无法弹出数据
printf("The stack is empty.\n");
return 0;
} else {
return s->data[s->top--]; // 栈顶位置减 1 并弹出数据
}
}
// 获取栈顶元素
int top(struct Stack *s) {
if (isEmpty(s)) { // 如果堆栈为空则无栈顶元素
printf("The stack is empty.\n");
return 0;
} else {
return s->data[s->top]; // 直接返回栈顶元素
}
}
// 输出堆栈所有数据
void printStack(struct Stack *s) {
if (isEmpty(s)) {
printf("The stack is empty.\n");
} else {
printf("The stack is: ");
for (int i = 0; i <= s->top; i++) {
printf("%d ", s->data[i]);
}
printf("\n");
}
}
// 主函数
int main() {
struct Stack s;
initStack(&s); // 初始化堆栈
push(&s, 1);
push(&s, 2);
push(&s, 3);
printStack(&s); // 输出堆栈所有数据
printf("The top element is: %d\n", top(&s)); // 获取栈顶元素
pop(&s);
printStack(&s);
return 0;
}
```
这段代码演示了如何使用结构体实现一个简单的堆栈,并提供了基本的操作函数,如初始化堆栈、压入数据、弹出数据、获取栈顶元素等。