用c语言实现以下要求,通过键盘读取元素建立顺序栈,给定一个元素,将此元素压入此栈中,将栈顶元素弹出此栈
时间: 2024-10-25 14:12:09 浏览: 18
顺序栈,压栈、弹栈、获得栈顶元素、统计栈中元素个数、打印栈中元素
5星 · 资源好评率100%
在C语言中,我们可以使用数组来简单地实现顺序栈。栈是一种后进先出(LIFO,Last In First Out)的数据结构。以下是基本的实现步骤:
1. 定义栈的数据结构:
```c
#define MAX_SIZE 100 // 设置栈的最大容量
typedef struct {
int stack[MAX_SIZE]; // 数组存储栈元素
int top; // 栈顶指针,表示当前栈顶位置
} Stack;
```
2. 初始化栈:
```c
void init(Stack *s) {
s->top = -1; // 初始栈为空,top置-1
}
```
3. 入栈(压入元素)操作:
```c
void push(Stack *s, int value) {
if (s->top < MAX_SIZE - 1) { // 如果还有空间,增加栈顶元素
s->stack[++s->top] = value;
} else {
printf("Stack overflow!\n"); // 没有空间,提示溢出
}
}
```
4. 出栈(弹出元素)操作:
```c
int pop(Stack *s) {
if (s->top == -1) { // 如果栈空,返回错误信息
return -1;
} else {
int value = s->stack[s->top]; // 获取栈顶元素
s->top--; // 移动栈顶指针
return value;
}
}
```
5. 主函数示例,演示如何使用栈:
```c
int main() {
Stack myStack;
init(&myStack);
// 从键盘输入并压入栈
int input;
while (scanf("%d", &input) == 1) {
push(&myStack, input);
}
// 弹出栈顶元素并打印
int poppedValue;
while ((poppedValue = pop(&myStack)) != -1) {
printf("Popped element: %d\n", poppedValue);
}
return 0;
}
```
阅读全文