由于顺序栈的操作位置基本在栈底,所以,不需要查找插入和删除的位置,也不需要移动元素,因而顺序栈的基本操作要比顺序表简单的多,其基本操作时间复杂度均为O(1)。下面给出顺序栈的部分操作的实现。
(1)初始化操作。顺序栈的初始化就是构造一个空的顺序栈S,初始分配的最大容量为maxsize,预设的需要扩容的增量为incresize。其主要操作是:申请存储控件,栈顶指针的初始值置为-1.
void InitStack_Sq(SqStack &S, int maxsize=STACK_INIT_SIZE, int incresize=STACKINCREMENT){
S.stack=(ElemType *)malloc(maxsize*sizeof(ElemType));
//顺序栈的初始分配最大空间
if(!S.stack) exit(1);