栈:限定仅在表尾进行插入或删除操做的线性表;表尾端称为栈顶,表头端称为栈底。不含元素的空表称为空栈。数组
特色:进栈操做:栈底元素先进栈,栈顶元素后进栈;ide
出栈操做:栈顶元素先出栈,栈底元素后出栈;指针
总结:栈的修改是按照后进先出的原则进行的。it
顺序栈和链栈class
顺序栈:利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时,附设指针top指示栈顶元素在顺序栈中的位置。数据类型
一般栈空表示为:top=0;总结
可是,一方面,若是以C语言做为描述语言时,C语言中的数组下标约定从0开始,这样设定(top=0)会带来很大不便;数据
另外一方面,因为栈在使用过程当中须要最大空间的大小很难肯定,因此,在初始化栈空时,不该该限定栈的最大容量。top
比较合理的作法为:语言
先为栈分配一个基本容量
在应用过程当中不断扩大栈的容量空间(栈的空间不够时)
作法:设两个常量STACK_INIT_SIZE(存储空间初始分配量)、STACKINCREMENT(存储空间分配增量)
typedef struct{ SElemType *base; SElemType *top; int stacksize; }SqStack;
若base的值为null,则栈结构不存在;
栈空标记:top=base;
链栈:……