数据结构栈的输入与输出代码 c语言编程实现
时间: 2024-12-08 21:15:35 浏览: 18
在C语言中,数据结构栈通常通过数组或链表来实现。下面是一个简单的栈的输入和输出(push和pop操作)的代码示例,这里我们假设栈是通过数组实现的:
```c
#include <stdio.h>
#define MAX_SIZE 10
// 定义栈结构体
typedef struct {
int top; // 栈顶指针
int data[MAX_SIZE]; // 存储元素的数组
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = -1;
}
// 判断栈是否已满
int is_full(Stack *s) {
return (s->top == MAX_SIZE - 1);
}
// 判断栈是否为空
int is_empty(Stack *s) {
return (s->top == -1);
}
// 入栈(push)
void push(Stack *s, int value) {
if (!is_full(s)) {
s->data[++(s->top)] = value;
printf("Pushed %d onto the stack.\n", value);
} else {
printf("Stack is full, can't push %d.\n", value);
}
}
// 出栈(pop)
int pop(Stack *s) {
if (!is_empty(s)) {
int popped_value = s->data[s->top--];
printf("Popped %d from the stack.\n", popped_value);
return popped_value;
} else {
printf("Stack is empty, nothing to pop.\n");
return -1; // 返回一个特殊值表示栈空
}
}
int main() {
Stack myStack;
init(&myStack);
push(&myStack, 5);
push(&myStack, 10);
push(&myStack, 15); // 示例栈操作
while (!is_empty(&myStack)) {
int popped = pop(&myStack);
if (popped != -1) {
printf("Last popped value: %d\n", popped);
}
}
return 0;
}
```
在这个例子中,`init`函数用于初始化栈,`is_full`和`is_empty`检查栈的状态,`push`函数将元素添加到栈顶,`pop`函数移除并返回栈顶元素。主函数展示了如何创建、填充和弹出栈的操作。
阅读全文