用c语言编程,通过键盘读取元素建立顺序栈,给定一个元素,将此元素压入此栈中,将栈顶元素弹出此栈,生成一串完整代码
时间: 2024-10-25 14:15:35 浏览: 18
在C语言中,你可以使用数组作为基础数据结构来创建一个简单的顺序栈。下面是一个完整的示例代码,包括初始化栈、压入元素、弹出栈顶元素以及打印栈的内容:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10 // 定义栈的最大容量
// 定义栈结构体
typedef struct {
int data[MAX_SIZE]; // 存储栈的元素
int top; // 栈顶指针
} Stack;
// 初始化栈
void init(Stack* stack) {
stack->top = -1;
}
// 判断栈是否已满
int is_full(Stack* stack) {
return stack->top == MAX_SIZE - 1;
}
// 判断栈是否为空
int is_empty(Stack* stack) {
return stack->top == -1;
}
// 压入元素到栈顶
void push(Stack* stack, int element) {
if (is_full(stack)) {
printf("Stack is full, cannot push.\n");
return;
}
stack->data[++stack->top] = element;
printf("Element %d pushed to the stack.\n", element);
}
// 弹出并返回栈顶元素
int pop(Stack* stack) {
if (is_empty(stack)) {
printf("Stack is empty, cannot pop.\n");
return -1;
}
int popped_element = stack->data[stack->top--];
printf("Popped element: %d\n", popped_element);
return popped_element;
}
// 打印栈内容
void print_stack(Stack* stack) {
if (is_empty(stack)) {
printf("Stack is empty.\n");
} else {
for (int i = 0; i <= stack->top; ++i) {
printf("%d ", stack->data[i]);
}
printf("\n");
}
}
int main() {
Stack myStack;
init(&myStack);
// 示例操作栈
push(&myStack, 10);
push(&myStack, 20);
push(&myStack, 30);
print_stack(&myStack); // 输出 [10, 20, 30]
int poppedEle = pop(&myStack); // 弹出并打印 [20, 30]
printf("Popped Ele: %d\n", poppedEle); // 输出 Popped Ele: 30
print_stack(&myStack); // 输出 [10, 20]
return 0;
}
```
在这个例子中,我们首先创建了一个`Stack`结构体,包含一个整型数组和一个表示栈顶位置的索引。然后实现了初始化、判断栈状态(空/满)、压入、弹出和打印栈的基本操作。
注意,这个栈没有处理动态扩容的功能,实际项目中如果需要处理大数据量,可以考虑使用链表或其他更复杂的数据结构。此外,这里也没有错误处理机制,例如对用户输入的有效性检查。
阅读全文