一、概念
栈作为一种常用的数据结构, 了解栈对于算法的学习是非常必要的。栈有先进后出的特点,栈底指向数据表中的第一个元素,栈顶指向最后一个元素的下一个位置。如下图所示:
二、顺序存储结构
1.顺序栈实现
利用一组地址连续的存储单元存放数据data,同时定义一个变量top指示栈顶位置,可描述为:
typedef struct{
char data[SIZE];
int top;
}
2.共享栈
使两个顺序栈共享一个数据空间,两个栈的栈底分别设在数据空间两端,如下:
top1=-1时1号栈为空,top2=StackSize时2号栈为空,top2-top1=1时,判断为满栈。有效的利用储存空间,使两个栈的空间相互调节。
三、链式存储结构
链栈的优点是便于多个栈共享存储空间和提高其效率,且不存在栈满上溢的情况。如下图无头结点,Lhead指向栈顶结点
栈的链式存储类型可描述为:
typedef struct _node_{
int data;
struct _node_ *next;
} *node;