用c语言,通过键盘读取元素建立顺序栈,给定一个元素,将此元素压入此栈中,将栈顶元素弹出此栈
时间: 2024-10-25 14:12:59 浏览: 23
在C语言中,你可以使用数组作为顺序栈的基础结构,通过`main()`函数接收用户的输入,实现元素的压入和弹出操作。下面是一个简单的例子:
```c
#include <stdio.h>
#include <stdlib.h> // 用于动态内存分配
#define MAX_SIZE 5 // 定义栈的最大容量
Stack *stack; // 创建栈指针
// 结构体定义栈
typedef struct {
int data[MAX_SIZE]; // 存储栈的元素
int top; // 栈顶指针
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = -1;
}
// 压栈(push)
void push(Stack *s, int value) {
if (s->top >= MAX_SIZE - 1) { // 检查栈是否已满
printf("Stack overflow! Can't push element.\n");
return;
}
s->data[++s->top] = value;
printf("Element %d pushed into the stack.\n", value);
}
// 弹栈(pop)
int pop(Stack *s) {
if (s->top == -1) { // 检查栈是否为空
printf("Stack underflow! No elements to pop.\n");
return -1; // 返回-1表示栈为空
}
int value = s->data[s->top--]; // 取出栈顶元素并更新栈顶指针
return value;
}
int main() {
stack = (Stack*)malloc(sizeof(Stack)); // 分配内存给栈
if (!stack) {
printf("Memory allocation failed.\n");
return 1;
}
init(stack);
int element;
printf("Enter an integer to push it to the stack, or 'q' to quit: ");
while (scanf("%d", &element), element != 'q') {
push(stack, element); // 压入元素
printf("Current stack top: %d\n", stack->data[stack->top]);
element = pop(stack); // 弹出栈顶元素
if (element != -1)
printf("Popped element: %d\n", element);
}
free(stack); // 释放栈内存
return 0;
}
阅读全文