c语言结构体写堆栈模拟
时间: 2023-07-09 08:41:50 浏览: 114
好的,下面是一个简单的C语言结构体实现堆栈模拟的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10
// 定义结构体Stack
typedef struct {
int data[MAX_SIZE]; // 存放栈元素
int top; // 栈顶指针
} Stack;
// 初始化栈
void init_stack(Stack *s) {
s->top = -1;
}
// 判断栈是否为空
int is_empty(Stack *s) {
return s->top == -1;
}
// 判断栈是否已满
int is_full(Stack *s) {
return s->top == MAX_SIZE - 1;
}
// 入栈操作
void push(Stack *s, int ele) {
if (is_full(s)) { // 判断栈是否已满
printf("Stack is full.\n");
return;
}
s->top++; // 栈顶指针加1
s->data[s->top] = ele; // 将元素入栈
}
// 出栈操作
int pop(Stack *s) {
if (is_empty(s)) { // 判断栈是否为空
printf("Stack is empty.\n");
return -1;
}
int ele = s->data[s->top]; // 取出栈顶元素
s->top--; // 栈顶指针减1
return ele;
}
// 获取栈顶元素
int get_top(Stack *s) {
if (is_empty(s)) { // 判断栈是否为空
printf("Stack is empty.\n");
return -1;
}
return s->data[s->top]; // 返回栈顶元素
}
// 输出栈中所有元素
void print_stack(Stack *s) {
if (is_empty(s)) { // 判断栈是否为空
printf("Stack is empty.\n");
return;
}
printf("Stack: ");
for (int i = s->top; i >= 0; i--) {
printf("%d ", s->data[i]);
}
printf("\n");
}
// 主函数
int main() {
Stack s;
init_stack(&s);
push(&s, 1);
push(&s, 2);
push(&s, 3);
print_stack(&s);
printf("Top element: %d\n", get_top(&s));
int ele = pop(&s);
printf("Pop element: %d\n", ele);
print_stack(&s);
return 0;
}
```
在这个示例代码中,我们定义了一个结构体Stack,其中包含一个整型数组data来存储栈中的元素,以及一个整型top来表示栈顶指针。接下来,我们实现了栈的常见操作,如初始化栈、判断栈是否为空、判断栈是否已满、入栈操作、出栈操作、获取栈顶元素和输出栈中所有元素等。最后,在主函数中,我们演示了如何使用这些栈操作,包括入栈、获取栈顶元素、出栈以及输出栈中所有元素等。
阅读全文