使用数组建立一个能容纳10个元素的栈,要求从键盘输入5个数,依次存入栈中,然后按照出栈的标准顺序输出前三个出栈元素。用C语言
时间: 2024-10-24 08:17:25 浏览: 34
在C语言中,你可以使用数组和一个索引来模拟栈的功能。这里是一个简单的示例,展示如何创建一个大小为10的栈,并实现输入、存储和输出功能:
```c
#include <stdio.h>
#define MAX_SIZE 10
int stack[MAX_SIZE]; // 定义一个整型数组作为栈
int top = -1; // 栈顶指针初始化为-1,表示栈为空
void push(int value) {
if (top < MAX_SIZE - 1) { // 如果栈未满
top++;
stack[top] = value;
} else {
printf("Stack overflow!\n");
}
}
int pop() {
if (top >= 0) { // 如果栈非空
int value = stack[top];
top--;
return value;
} else {
printf("Stack underflow!\n");
return -1; // 返回一个错误值表示无法出栈
}
}
int main() {
for (int i = 0; i < 5; i++) {
int input;
printf("Enter number %d: ", i + 1);
scanf("%d", &input);
push(input); // 将输入的数压入栈
}
// 输出前三个元素(实际上是先出栈的)
for (int j = 0; j < 3 && top != -1; j++) {
printf("Popped element: %d\n", pop());
}
return 0;
}
```
在这个程序中,我们首先定义了一个大小为10的数组`stack`作为栈,然后通过`push`函数将用户输入的5个数字依次存入栈。接着,在`main`函数中,我们按顺序调用`pop`函数三次,每次都会弹出并打印栈顶的元素。
注意,由于数组下标是从0开始的,所以实际上只能出栈4个元素(因为栈顶指针会从5减少到1)。如果想要按照标准的先进后出(LIFO)顺序输出前三个元素,应该只出栈两次。
阅读全文