栈的基本操作实现:初始化、栈空、入栈、出栈、取栈顶元素。 基本要求 (1)采用顺序存储结构,利用C语言完整代码开实现栈的基本操作实现
时间: 2024-10-24 10:11:51 浏览: 28
顺序栈入栈出栈实现源码
5星 · 资源好评率100%
栈是一种常见的数据结构,其主要特点是后进先出(Last In, First Out, LIFO)。在顺序存储结构中,我们通常会使用数组来实现。以下是用C语言实现栈的基本操作(初始化、栈空、入栈、出栈和取栈顶元素)的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 50 // 定义栈的最大容量
typedef struct {
int data[MAX_SIZE]; // 顺序存储数组
int top; // 栈顶指针
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = -1;
}
// 判断栈是否为空
int is_empty(Stack *s) {
return s->top == -1;
}
// 入栈(添加元素)
void push(Stack *s, int value) {
if (is_full(s)) {
printf("Stack overflow!\n");
return;
}
s->data[++s->top] = value;
}
// 出栈(删除元素)
int pop(Stack *s) {
if (is_empty(s)) {
printf("Stack underflow!\n");
return -1;
}
return s->data[s->top--];
}
// 取栈顶元素但不删除
int peek(Stack *s) {
if (is_empty(s)) {
printf("Stack is empty.\n");
return -1;
}
return s->data[s->top];
}
// 判断栈是否已满
int is_full(Stack *s) {
return s- 1;
}
int main() {
Stack myStack;
init(&myStack);
// 测试基本操作
push(&myStack, 1);
push(&myStack, 2);
push(&myStack, 3);
printf("Top element: %d\n", peek(&myStack));
printf("Popped element: %d\n", pop(&myStack));
if (is_empty(&myStack)) {
printf("Stack is now empty.\n");
} else {
printf("Stack still has elements: %d\n", pop(&myStack)); // 这里会输出-1,因为已经弹完了
}
return 0;
}
```
阅读全文