顺序栈的基本操作实现c语言
时间: 2024-10-24 07:06:31 浏览: 29
顺序栈的基本操作实现
5星 · 资源好评率100%
在C语言中,顺序栈的基本操作通常是利用数组来实现的,下面是一个简单的顺序栈实现的例子,包含初始化、入栈、出栈和查看栈顶操作:
```c
#include <stdio.h>
#define MAX_SIZE 10
typedef struct Stack {
int top;
int data[MAX_SIZE];
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = -1; // 栈顶默认为空
}
// 入栈(压栈)
void push(Stack *s, int value) {
if (s->top == MAX_SIZE - 1) { // 检查是否已满
printf("Stack overflow!\n");
return;
}
s->data[++s->top] = value;
}
// 出栈(弹栈)
int pop(Stack *s) {
if (s->top == -1) { // 检查是否为空
printf("Stack underflow!\n");
return -1; // 返回错误码
}
return s->data[s->top--]; // 返回栈顶元素并调整top
}
// 查看栈顶元素(不删除)
int peek(Stack *s) {
if (s-1) {
printf("Stack is empty.\n");
return -1; // 返回错误码
}
return s->data[s->top]; // 返回栈顶元素
}
int main() {
Stack stack;
init(&stack);
push(&stack, 1);
push(&stack, 2);
printf("Top element is: %d\n", peek(&stack)); // 输出2
printf("%d popped from stack.\n", pop(&stack)); // 输出2
return 0;
}
```
在这个例子中,`init`函数设置了栈顶为-1,`push`函数用于向栈顶添加元素,`pop`函数则取出栈顶元素并更新栈顶指针,`peek`函数仅查看但不移除栈顶元素。
阅读全文