如何使用C语言的基础知识实现基于键盘输入的元素顺序栈操作?具体步骤包括:(1) 从键盘接收一个元素并将其压入栈中;(2) 提取并显示栈顶元素后弹出该元素。请提供相应的C代码示例。
时间: 2024-10-25 08:15:40 浏览: 21
以下是使用C语言的基本知识实现顺序栈操作的一个简单示例:
首先,我们需要定义一个结构体表示栈,并包含栈顶指针和存储元素的数组。这里我们假设栈大小固定为5个元素。
```c
#include <stdio.h>
// 定义栈结构
typedef struct {
int stack[5]; // 区域用于存储元素
int top; // 栈顶指针,初始值为-1,表示栈为空
} Stack;
// 初始化栈
Stack createStack() {
Stack s = { {-1, -1, -1, -1, -1}, -1 };
return s;
}
// 压入元素
void push(Stack *s, int element) {
if (s->top == 4) {
printf("Stack is full.\n");
return;
}
s->stack[++s->top] = element;
printf("Element %d pushed to the stack.\n", element);
}
// 弹出栈顶元素
int pop(Stack *s) {
if (s->top == -1) {
printf("Stack is empty.\n");
return -1;
}
int top_element = s->stack[s->top--];
printf("Top element after popping: %d\n", top_element);
return top_element;
}
int main() {
Stack s = createStack();
char cmd;
while (1) {
printf("Enter 'push' to add an element, 'pop' to remove and display the top element, or 'quit' to exit: ");
scanf(" %c", &cmd);
if (cmd == 'p' || cmd == 'Q' || cmd == 'q') { // 将大写字母转换为小写以便处理 quit 的情况
scanf("%d", &cmd); // 推荐这里检查输入合法性,此处为了简化示例略去
if (cmd == 'p')
push(&s, cmd - 'p');
else if (cmd == 'q')
break;
} else if (cmd == 'p') {
// 避免非法命令导致的无限循环
continue;
} else if (cmd == 'pop') {
int top = pop(&s);
if (top != -1)
printf("The top element is now: %d\n", top);
} else {
printf("Invalid command.\n");
}
getchar(); // 消除换行
}
return 0;
}
```
这个程序会不断从键盘接收用户输入,根据输入执行压入或弹出操作。注意,这个实现非常基础,实际应用中可能需要考虑更多的边界条件和错误处理。
阅读全文