通过键盘读取元素,建立顺序栈,给定一个元素,将此元素压入此栈中,将栈顶元素弹出此栈
时间: 2024-10-25 14:15:31 浏览: 21
在C语言中,你可以使用数组或者链表来实现一个顺序栈,这里我们简单地使用数组作为例子。以下是一个基础的顺序栈实现,包含初始化栈、压入元素和弹出元素的操作:
```c
#include <stdio.h>
#define MAX_SIZE 10 // 定义栈的最大容量
typedef struct {
int data[MAX_SIZE]; // 存储栈元素
int top; // 栈顶指针
} Stack;
// 初始化空栈
Stack initStack() {
Stack stack;
stack.top = -1;
return stack;
}
// 压入元素
void push(Stack* stack, int value) {
if(stack->top >= MAX_SIZE - 1) {
printf("Stack overflow! Cannot push.\n");
return;
}
stack->data[++stack->top] = value;
printf("Pushed %d onto the stack.\n", value);
}
// 弹出栈顶元素
int pop(Stack* stack) {
if(stack->top == -1) {
printf("Stack underflow! Cannot pop.\n");
return -1;
}
int topValue = stack->data[stack->top--];
return topValue;
}
int main() {
Stack stack = initStack();
char input;
while(scanf("%c", &input) == 1) { // 读取字符输入
switch(input) {
case 'i': // 压入元素
int num;
scanf("%d", &num); // 读取整数
push(&stack, num);
break;
case 'p': // 弹出栈顶元素并打印
int poppedNum = pop(&stack);
if(poppedNum != -1)
printf("Popped: %d\n", poppedNum);
else
printf("Stack is empty.\n");
break;
case 'q': // 退出程序
return 0;
default:
printf("Invalid input. Press 'i' to insert, 'p' to print top, or 'q' to quit.\n");
}
getchar(); // 清理上一次输入的换行符
}
return 0;
}
```
在这个程序中,用户可以输入'i'来压入元素,'p'来查看并弹出栈顶元素(如果栈为空,则提示"Stack is empty."),输入'q'退出程序。如果试图压入超过栈容量的元素或者尝试弹出空栈,会显示错误信息。
阅读全文