前言
厨房里叠放的盘子想必大家都见过,新洗好的只能放在最顶层,使用时也必须从最上层开始取。羽毛球桶里的羽毛球也是如此,用过的球只能放回顶层,取用时也必须从最上层拿取。这些日常场景里,其实都藏着一种重要的数据结构:栈。
关于栈的一个笑话:从前有一家客栈,客栈有一条规矩:最早进来的人最晚上菜,最晚进来的人最早上菜。有一天,一个人早早来到客栈吃饭,发现一个比他来的还晚的人已经吃完饭走了,而店主还没上自己的菜。吃完饭后他问店主这是为什么,店主回答:'因为我们是客栈啊。'
一、栈的基本概念
1.1 栈的定义
栈 (stack) 是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作,其核心特性遵循后进先出原则,这种特性可以形象地类比为叠放盘子的过程:最晚放入的盘子 (后进) 会被最先取出 (先出),而最早放入的盘子 (先进) 则最后才能取出 (后出)。
1.2 栈的基础知识
为了方便理解,我们先明确栈的 3 个核心概念:
**栈顶(Top):**位于栈的最上层,即最后入栈的元素。所有入栈(push)和出栈(pop)操作都只能在栈顶进行。
**栈底(Bottom):**位于栈的最底层,即第一个入栈的元素。这个元素在栈中位置固定,不会轻易变动。
**空栈(empty):**没有任何元素的栈状态。此时无法执行出栈操作。
1.3 进栈出栈的示意图
**进栈(Push):**将元素添加到栈顶
**出栈(Pop):**移除并返回栈顶元素

二、栈的实现
2.1 栈实现的相关接口
本文通过数组的方式实现栈,实现的相关接口如图所示:

2.2 栈实现的相关文件

2.3 Stack.h 文件
Stack.h 头文件实现:通过结构体定义栈,声明栈的相关接口函数。
#pragma once
#include<stdlib.h>
#include<stdio.h>
#include<stdbool.h>
#include
STDatatype;
STDatatype* a;
top;
capacity;
}Stack;
;
;
;
;
STDatatype ;
;
;




