用c语言通过键盘读取元素建立顺序栈,给定一个元素,将此元素压入此栈中,将栈顶元素弹出此栈
时间: 2024-10-25 09:13:04 浏览: 22
在C语言中,你可以使用数组来模拟简单的顺序栈结构,以下是基本步骤:
1. 定义栈的数据结构:首先创建一个动态大小的数组作为栈,并有一个变量`top`记录栈顶位置,初始化为-1表示栈为空。
```c
#include <stdio.h>
#define MAX_SIZE 100 // 栈的最大容量
typedef struct {
int data[MAX_SIZE]; // 存储栈元素
int top; // 栈顶指针
} Stack;
```
2. 初始化栈:创建栈时清零栈顶指针。
```c
Stack stack = { {0}, -1 };
```
3. 压栈操作 (push):当输入一个新元素时,检查栈是否已满。如果不满,将元素放入栈顶并增加栈顶指针。
```c
void push(Stack *s, int item) {
if (stack.top == MAX_SIZE - 1) {
printf("Stack is full.\n");
} else {
stack.data[++stack.top] = item;
printf("Element %d pushed to the stack.\n", item);
}
}
```
4. 弹栈操作 (pop):从栈顶移除并返回元素。若栈为空,则提示错误信息。
```c
int pop(Stack *s) {
if (stack.top == -1) {
printf("Stack is empty.\n");
return -1; // 或者抛出异常
} else {
return stack.data[stack.top--];
}
}
```
5. 主函数示例:演示如何使用这些函数读取用户输入的元素并操作栈。
```c
int main() {
int choice;
while (1) {
printf("Enter 1 to push, 2 to pop or 3 to exit:\n");
scanf("%d", &choice);
switch (choice) {
case 1:
int item;
printf("Enter an element to push: ");
scanf("%d", &item);
push(&stack, item);
break;
case 2:
int poppedItem = pop(&stack);
if (poppedItem != -1)
printf("Popped element: %d\n", poppedItem);
else
printf("No element to pop.\n");
break;
case 3:
return 0;
default:
printf("Invalid input.\n");
}
}
return 0;
}
```
阅读全文