在c语言中初始化一个堆栈,然后编写一个函数在堆栈顶部添加一个元素,然后编写一个函数删除堆栈顶部元素,最后编写一个函数返回堆栈顶部元素
时间: 2024-02-13 13:59:41 浏览: 80
好的,下面是在 C 语言中初始化一个堆栈,并编写添加、删除、返回顶部元素的函数的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct Stack {
int data[MAXSIZE];
int top;
} Stack;
void initStack(Stack *s) {
s->top = -1;
}
int isStackEmpty(Stack *s) {
return s->top == -1;
}
int isStackFull(Stack *s) {
return s->top == MAXSIZE - 1;
}
void push(Stack *s, int x) {
if (isStackFull(s)) {
printf("Stack is full!\n");
exit(1);
}
s->data[++s->top] = x;
}
void pop(Stack *s) {
if (isStackEmpty(s)) {
printf("Stack is empty!\n");
exit(1);
}
s->top--;
}
int peek(Stack *s) {
if (isStackEmpty(s)) {
printf("Stack is empty!\n");
exit(1);
}
return s->data[s->top];
}
int main() {
Stack s;
initStack(&s);
push(&s, 1);
push(&s, 2);
push(&s, 3);
printf("After push: ");
while (!isStackEmpty(&s)) {
printf("%d ", peek(&s));
pop(&s);
}
printf("\n");
return 0;
}
```
在上面的代码中,我们定义了一个结构体 Stack,其中 data 数组用于存储堆栈元素,top 变量表示栈顶指针的位置。initStack 函数用于初始化堆栈,isStackEmpty 函数用于判断堆栈是否为空,isStackFull 函数用于判断堆栈是否已满。push 函数用于将元素压入堆栈,pop 函数用于弹出堆栈顶部元素,peek 函数用于获取堆栈顶部元素的值。在主函数中,我们先将元素 1、2、3 压入堆栈,然后依次弹出堆栈元素,并打印出顶部元素。
阅读全文