用C语言编写,使用数组建立一个能容纳10个元素的栈,要求从键盘输入5个数,依次存入栈中,然后按照出栈的标准顺序输出前三个出栈元素
时间: 2024-10-24 22:08:29 浏览: 23
在C语言中,我们可以创建一个简单的栈结构来满足这个需求。首先,我们需要定义一个栈结构体,并提供push(入栈)和pop(出栈)操作。这里我们使用一个动态数组作为栈的基础存储。
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10
typedef struct {
int stack[MAX_SIZE]; // 存储栈数据的数组
int top; // 栈顶指针
} Stack;
// 函数声明:初始化栈
void init(Stack *s);
// 函数声明:将元素入栈
void push(Stack *s, int value);
// 函数声明:从栈中取出并返回顶部元素,不删除
int pop(Stack *s);
// 函数声明:判断栈是否为空
int is_empty(Stack *s);
int main() {
Stack myStack;
init(&myStack);
for (int i = 0; i < 5; i++) {
printf("请输入第 %d 个数字: ", i + 1);
int num;
scanf("%d", &num);
push(&myStack, num);
}
if (!is_empty(&myStack)) {
printf("前三个出栈元素依次为:\n");
for (int i = 0; i < 3 && !is_empty(&myStack); i++) {
printf("%d ", pop(&myStack));
}
printf("\n");
} else {
printf("栈已经空了,无法继续出栈。\n");
}
return 0;
}
// 初始化栈
void init(Stack *s) {
s->top = -1;
}
// 入栈
void push(Stack *s, int value) {
if (s->top == MAX_SIZE - 1) {
printf("栈已满,无法再入栈。\n");
return;
}
s->top++;
s->stack[s->top] = value;
}
// 出栈
int pop(Stack *s) {
if (is_empty(s)) {
printf("栈为空,无法出栈。\n");
return -1;
}
int top_value = s->stack[s->top];
s->top--;
return top_value;
}
// 判断栈是否为空
int is_empty(Stack *s) {
return s->top == -1;
}
```
当你运行此程序时,它会提示你输入五个整数,然后按顺序打印出栈顶的三个元素。如果栈已空,则会输出相应的提示信息。注意,在实际应用中,为了保证内存安全,应该在分配栈空间时就考虑内存管理,这里简化了演示。
阅读全文