过键盘读取元素建立顺序栈,给定一个元素,将此元素压入此栈中,将栈顶元素弹出此栈,用c语言演示一串完整代码
时间: 2024-10-26 07:03:08 浏览: 15
在C语言中,我们可以使用数组来模拟一个基本的顺序栈,由于键盘输入需要用户交互,这里我将为你展示如何通过循环读取用户输入,然后操作栈的操作。注意,这个例子并不会真的使用键盘输入,因为直接在这个文本环境中无法获取键盘输入。但在实际应用中,你可以通过`scanf()`函数来实现。
首先,我们创建一个数组作为栈,初始化大小为MAX_SIZE,并设置栈顶指针top为-1表示空栈。接下来定义push(入栈)和pop(出栈)函数:
```c
#include <stdio.h>
#define MAX_SIZE 50
typedef struct {
int data[MAX_SIZE]; // 栈的存储区
int top;
} Stack;
// 入栈操作
void push(Stack *stack, int element) {
if (stack->top == MAX_SIZE - 1) {
printf("Stack is full, cannot push.\n");
return;
}
stack->data[++stack->top] = element; // 当栈满时,top自增
}
// 出栈操作
int pop(Stack *stack) {
if (stack->top == -1) {
printf("Stack is empty, cannot pop.\n");
return -1; // 返回特殊值表示栈为空
}
return stack->data[stack->top--]; // 减少top并返回栈顶元素
}
// 主函数示例
int main() {
Stack s;
s.top = -1;
while (true) { // 用户输入循环
printf("Enter an element to push (-1 to quit): ");
int input;
scanf("%d", &input);
if (input == -1)
break; // 用户选择退出
push(&s, input); // 将元素入栈
printf("Popped element: %d\n", pop(&s)); // 弹出栈顶元素并打印
}
return 0;
}
```
阅读全文