数据结构(C语言实现)——堆栈
在数据结构中,存在着堆栈。
堆栈其实是两种数据结构,一种是堆,一种是栈;
1.堆:堆可以被看成是一棵树,是利用完全二叉树来存储一组数据。
2.栈:一种先进后出的数据结构。
我们通常意义上说的堆栈就是指栈。
栈有先进后出的特点,即是指在读取数据时,先存储的数据后读取。
栈有两种重要的操作,入栈push,出栈pop
栈函数功能如下:
1.初始化
2.销毁
3.入栈、出栈
4.返回栈顶元素
…
决定存储结构:线性结构(数组)
我们根据已知条件(用数组存储数据,当前存入数量多少),假设栈Stack定义如下:
#define MAX_ROOM 100
typedef int STACK;
STACK data[MAX_ROOM];
int dataCount;
假设需要输出栈中用户输入的所有数据,对应的程序段:
int i=0;
for(i = 0; i < MAX_ROOM; i++)
输出data[MAX_ROOM-i-1];
我们知道,MAX_ROOM是数组定义最大的空间,而不是用户输入数据的数量,我们可以得出:
for(i = 0; i < dataCount; i++)
输出data[dataCount - i - 1];
从上述分析可知,dataCount是栈不可或缺的控制因素。
但是上面有些问题,就是若需要同时定义多个栈,那么方式就很凌乱,而且缺乏封装性;同时,也将核心数据暴露在用户的面前,这种做法不宜采用,或者说这不符合编程规范。
所以根据以上分析,可以将各个数据封装起来,形成一个整体,即如下:
typedef struct STACK{
USER_TYPE *data;//USER_TYPE是用户自定义的一种类型
int maxRoom;//为栈申请的最大空间
int top;//指向栈顶元素
}STACK;
结构如下图所示,
数据结构(C语言实现)——堆栈
最新推荐文章于 2024-04-06 00:17:47 发布