C语言使用顺序栈,接收键盘的输入,实现如下功能: 1. 输入数字时,依次入栈。 2. 输入字母时,依次出栈。 3. 每次入栈或者出栈,都将顺序栈中的各个元素输出出来。
时间: 2024-11-15 10:23:12 浏览: 1
在C语言中,我们可以使用数组作为简单的顺序栈结构来实现上述功能。这里是一个基本的示例,我们将用`main`函数和一些临时变量来完成这个任务:
```c
#include <stdio.h>
#define MAX_SIZE 50 // 设置栈的最大容量
typedef struct Stack {
char data[MAX_SIZE];
int top; // 栈顶指针
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = -1;
}
// 判断栈是否为空
int isEmpty(Stack *s) {
return s->top == -1;
}
// 入栈操作
void push(Stack *s, char item) {
if (isEmpty(s)) {
s->data[++s->top] = item;
} else {
printf("Stack is full. Cannot push %c.\n", item);
}
}
// 出栈操作,若栈空则返回'\0'
char pop(Stack *s) {
if (isEmpty(s)) {
return '\0'; // 表示栈空
} else {
return s->data[s->top--];
}
}
// 输出栈中的所有元素
void printStack(Stack *s) {
for (int i = 0; i <= s->top; i++) {
printf("%c ", s->data[i]);
}
printf("\n");
}
int main() {
Stack stack;
init(&stack);
while (1) { // 循环获取用户输入
char input;
scanf(" %c", &input);
if (isdigit(input)) { // 如果输入的是数字
push(&stack, input);
printStack(&stack); // 入栈后立即打印栈内容
} else if (isalpha(input)) { // 如果输入的是字母
char popped_char = pop(&stack);
if (popped_char != '\0') { // 若栈非空,则输出并继续出栈
printf("Popped %c\n", popped_char);
printStack(&stack);
}
} else { // 如果输入不符合要求,提示用户
printf("Invalid input. Please enter a number or an alphabet.\n");
}
}
return 0;
}
```
在这个程序中,我们创建了一个栈结构,并实现了初始化、判断栈空、入栈、出栈以及打印栈的功能。通过循环读取用户输入,根据输入类型来决定入栈或出栈的操作。
阅读全文