用命令行操作:输入n个字符,将其入栈,再将这n个字符出栈并显示(c语言)
时间: 2024-12-09 22:16:21 浏览: 10
在C语言中,你可以使用数组和一个简单的栈数据结构来实现这个功能。首先,你需要定义一个字符数组作为栈的容器,然后定义两个函数:一个用于入栈(push),另一个用于出栈(pop)。这里是一个简化的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
// 定义栈结构体
typedef struct {
char stack[MAX_SIZE];
int top; // 栈顶指针
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = -1;
}
// 入栈 (push)
void push(Stack *s, char c) {
if (s->top < MAX_SIZE - 1) {
s->stack[++s->top] = c;
printf("Pushed character '%c'\n", c);
} else {
printf("Stack is full, cannot push.\n");
}
}
// 出栈 (pop)
char pop(Stack *s) {
if (s->top >= 0) {
return s->stack[s->top--];
} else {
printf("Stack is empty, cannot pop.\n");
return '\0'; // 返回空字符表示栈空
}
}
int main() {
Stack myStack;
init(&myStack);
// 用户输入 n 个字符并入栈
int n;
printf("Enter number of characters to push: ");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
char input;
printf("Enter character %d: ", i + 1);
scanf(" %c", &input);
push(&myStack, input);
}
// 出栈并显示
for (int i = 0; i < n; i++) {
char poppedChar = pop(&myStack);
if (poppedChar != '\0') {
printf("Popped character: '%c'\n", poppedChar);
} else {
break;
}
}
return 0;
}
```
在这个程序中,用户首先输入要推入栈的字符数量,然后依次输入每个字符,最后会按照入栈的顺序把它们弹出来。注意,这个示例假设了用户输入的数量不会超过栈的最大容量。
阅读全文