编程c语言实现栈的数据结构。 从命令行得到n个整数,并 将其入栈 依次出栈并显示到屏幕上,要求代码简单
时间: 2024-11-22 11:34:35 浏览: 18
在C语言中,实现一个栈数据结构通常会使用数组或者结构体。这里我将给出一个基于数组的简单栈实现,用于存储整数,并包含了入栈、出栈以及显示栈顶元素的功能。假设栈的大小固定,为了便于演示,我们先定义栈的大小。
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10 // 栈的最大容量
// 定义栈结构
typedef struct {
int data[MAX_SIZE]; // 存储整数的数组
int top; // 栈顶指针
} Stack;
// 初始化栈
void init(Stack *stack) {
stack->top = -1;
}
// 判断栈是否为空
int is_empty(Stack *stack) {
return stack->top == -1;
}
// 入栈(添加元素)
void push(Stack *stack, int value) {
if (stack->top == MAX_SIZE - 1) {
printf("Stack is full, cannot push more elements.\n");
return;
}
stack->data[++stack->top] = value;
}
// 出栈(删除并返回栈顶元素)
int pop(Stack *stack) {
if (is_empty(stack)) {
printf("Stack is empty, nothing to pop.\n");
return -1;
}
return stack->data[stack->top--];
}
// 显示栈顶元素
void peek(Stack *stack) {
if (is_empty(stack)) {
printf("Stack is empty.\n");
} else {
printf("Top element: %d\n", stack->data[stack->top]);
}
}
// 主函数,从命令行接收输入并操作栈
int main() {
Stack myStack;
int n, element;
init(&myStack);
printf("Enter the number of integers to be pushed into the stack (max %d): ", MAX_SIZE);
scanf("%d", &n);
// 入栈
while (n--) {
printf("Enter an integer: ");
scanf("%d", &element);
push(&myStack, element);
}
// 出栈并显示
printf("\nElements in reverse order as they were entered:\n");
while (!is_empty(&myStack)) {
peek(&myStack);
element = pop(&myStack);
}
return 0;
}
```
这段代码首先初始化了栈,然后根据用户输入的整数,逐个入栈并最终按照相反的顺序出栈显示。请注意,此代码未处理异常情况,如命令行输入非数字等。在实际应用中,你需要对用户的输入进行适当的错误检查和处理。
阅读全文