如何使用C语言创建一个简单的顺序栈,以便从键盘输入元素并实现压入和弹出操作?
时间: 2024-10-25 08:13:07 浏览: 22
在C语言中,我们可以使用数组来创建一个简单的顺序栈。这里是一个简单的示例,它包括栈的数据结构、初始化、压入和弹出元素的函数:
首先,定义一个栈结构,包含一个整型数组和一个用于跟踪栈顶位置的变量:
```c
#include <stdio.h>
#define MAX_SIZE 50
typedef struct {
int data[MAX_SIZE];
int top; // 栈顶指针
} Stack;
```
然后初始化栈,将栈顶设置为-1,表示栈为空:
```c
Stack stack = { {0}, -1 };
```
下面是一些基本的操作:
1. **压入(Push)** 函数:
```c
void push(Stack *s, int value) {
if (s->top == MAX_SIZE - 1) {
printf("Stack is full, can't push element.\n");
return;
}
s->data[++s->top] = value;
}
```
2. **弹出(Pop)** 函数:
```c
int pop(Stack *s) {
if (s->top == -1) {
return -1; // 栈空,无法弹出
}
int topValue = s->data[s->top];
s->top--;
return topValue;
}
```
在主函数中,我们可以接收用户输入,并执行相应的操作:
```c
int main() {
int choice;
while (1) {
printf("\n1. Push an element\n2. Pop an element\n3. Exit\n");
scanf("%d", &choice);
switch (choice) {
case 1:
int value;
printf("Enter a number to push: ");
scanf("%d", &value);
push(&stack, value);
break;
case 2:
int poppedValue = pop(&stack);
if (poppedValue != -1) {
printf("Popped value: %d\n", poppedValue);
} else {
printf("Stack is empty.\n");
}
break;
case 3:
return 0;
default:
printf("Invalid choice.\n");
break;
}
}
}
```
当你运行这个程序,会提示用户选择压入、弹出或退出操作。
阅读全文