如何用C语言实现顺序栈的元素入栈和出栈操作,写源代码
时间: 2024-10-25 15:10:00 浏览: 32
C语言实现顺序栈.c
5星 · 资源好评率100%
在C语言中,我们可以使用数组或者链表来实现顺序栈的数据结构。这里我们先来看一下基于数组的简单实现:
```c
#include <stdio.h>
// 定义栈结构体,包含数组和两个指针
typedef struct {
int capacity; // 栈容量
int top; // 栈顶指针,表示下一个将要插入的位置
int* stack; // 存放元素的数组
} Stack;
// 初始化栈
Stack createStack(int size) {
Stack s;
s.capacity = size;
s.top = -1;
s.stack = (int*)malloc(s.capacity * sizeof(int));
if (!s.stack) {
printf("Memory allocation failed.\n");
return NULL;
}
return s;
}
// 入栈操作
void push(Stack* s, int value) {
if (s->top == s->capacity - 1) { // 判断是否已满
printf("Stack overflow.\n");
return;
}
s->stack[++s->top] = value;
}
// 出栈操作
int pop(Stack* s) {
if (s->top == -1) { // 判断是否为空
printf("Stack underflow.\n");
return -1; // 返回错误码
}
return s->stack[s->top--]; // 减一并返回顶部元素
}
// 主函数示例
int main() {
Stack myStack = createStack(5); // 创建一个大小为5的栈
if (myStack) {
push(&myStack, 10);
push(&myStack, 20);
push(&myStack, 30);
printf("Top element is %d\n", pop(&myStack)); // 输出栈顶元素
}
return 0;
}
```
这个程序首先创建了一个栈,并实现了`push`和`pop`操作。`push`用于向栈内添加元素,`pop`用于取出栈顶元素。注意,在实际使用中,还需要处理栈溢出和栈空的情况。
阅读全文