写一个可以运行的c语言栈程序,由键盘输入数值
时间: 2024-02-15 22:05:22 浏览: 49
好的,这里提供一个可以运行的c语言栈程序,由键盘输入数值,使用数组实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100 // 定义栈的最大长度
typedef struct {
int data[MAX_SIZE];
int top; // 栈顶指针
} Stack;
Stack* createStack() // 初始化栈
{
Stack* s = (Stack*)malloc(sizeof(Stack));
s->top = -1; // 初始化栈顶指针为-1
return s;
}
void push(Stack* s, int x) // 入栈操作
{
if (s->top == MAX_SIZE - 1) {
printf("Stack overflow.\n");
return;
}
s->top++;
s->data[s->top] = x;
}
int pop(Stack* s) // 出栈操作
{
if (s->top == -1) {
printf("Stack underflow.\n");
return -1;
}
int x = s->data[s->top];
s->top--;
return x;
}
int top(Stack* s) // 取栈顶元素操作
{
if (s->top == -1) {
printf("Stack is empty.\n");
return -1;
}
return s->data[s->top];
}
int isEmpty(Stack* s) // 判断栈是否为空操作
{
return s->top == -1;
}
int main()
{
Stack* s = createStack();
int n;
printf("请输入要入栈的元素个数:");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
int x;
printf("请输入第%d个元素:", i + 1);
scanf("%d", &x);
push(s, x);
}
printf("栈顶元素为:%d\n", top(s));
printf("出栈元素为:");
while (!isEmpty(s)) {
printf("%d ", pop(s));
}
printf("\n栈是否为空:%d\n", isEmpty(s));
return 0;
}
```
运行结果如下:
```
请输入要入栈的元素个数:5
请输入第1个元素:1
请输入第2个元素:2
请输入第3个元素:3
请输入第4个元素:4
请输入第5个元素:5
栈顶元素为:5
出栈元素为:5 4 3 2 1
栈是否为空:1
```
其中,先由键盘输入要入栈的元素个数n,然后再依次输入n个元素。最后输出栈顶元素、出栈元素和栈是否为空。
阅读全文