通过c语言使用数组建立一个能容纳10个元素的栈,然后从键盘输入10个数字,依次存入栈中,然后按照出栈的标准顺序,依次输出栈内的每一个元素。
时间: 2024-09-19 18:13:34 浏览: 50
在C语言中,我们可以使用数组作为栈的基础结构,因为数组本身就是一种线性的数据结构。这里是一个简单的示例,我们将创建一个能容纳10个整数的栈,并演示如何入栈和出栈:
```c
#include <stdio.h>
#define MAX_SIZE 10
// 定义栈结构体
typedef struct {
int data[MAX_SIZE]; // 存储数据的数组
int top; // 栈顶指针
} Stack;
// 初始化栈
void init(Stack* stack) {
stack->top = -1;
}
// 判断栈是否满
int is_full(Stack* stack) {
return stack->top == MAX_SIZE - 1;
}
// 判断栈是否空
int is_empty(Stack* stack) {
return stack->top == -1;
}
// 入栈操作
void push(Stack* stack, int value) {
if (!is_full(stack)) {
stack->data[++stack->top] = value;
printf("Pushed %d onto the stack.\n", value);
} else {
printf("Stack is full. Can't push %d.\n", value);
}
}
// 出栈操作
int pop(Stack* stack) {
if (!is_empty(stack)) {
int popped_value = stack->data[stack->top--];
printf("Popped %d from the stack.\n", popped_value);
return popped_value;
} else {
printf("Stack is empty. Nothing to pop.\n");
return -1; // 返回一个特殊值表示栈空
}
}
int main() {
Stack my_stack;
init(&my_stack);
for (int i = 0; i < 10; ++i) {
int num;
scanf("%d", &num); // 输入10个数字
push(&my_stack, num);
}
while (!is_empty(&my_stack)) { // 只要栈不空就一直出栈并打印
int popped_num = pop(&my_stack);
if (popped_num != -1)
printf("Last element popped was %d\n", popped_num);
}
return 0;
}
```
这个程序首先初始化一个栈,接着读取用户输入的10个整数并逐个推入栈中。当需要展示栈的内容时,它会不断弹出元素直到栈为空。
阅读全文