【#第一文档网# 导语】以下是®第一文档网的小编为您整理的《顺序栈的类型定义》,欢迎阅读!
1、顺序栈的类型定义 #define StackSize 100 //假定预分配的栈空间最多为100 个元素 typedef char ElementType;//假定栈元素的数据类型为字符 typedef struct{ ElementType data[StackSize]; int top; }SeqStack; 注意: ①顺序栈中元素用向量存放; ②栈底位置是固定不变的,可设置在向量两端的任意一个端点; ③栈顶位置是随着入栈和出栈操作而变化的,用一个整型量top(通常称top 为栈顶指针)来指示当前栈顶位置。 2、顺序栈的结构 注意:top 指向入栈是下一个元素将要存放的位置; top-1(减1)是指向出栈时下一个元素的取值位置。 栈空的条件:top==base; 栈满的条件:top-base>=stacksize 3、顺序栈的基本操作 前提条件:设S 是SeqStack 类型的指针变量。若栈底位置在向量的低端,即S->data[0]是栈底元素。 top: (1) 进栈操作 进栈时,需要将S->top 加1 注意: ①入栈操作前,需要查看栈是否已满,S->top==StackSize-1 表示栈满 ②"上溢"现象--当栈满时,再做入栈运算产生空间溢出的现象。上溢是一种出错状态,应设法避免。 (2) 出栈操作 退栈时,需将S->top 减1 注意: ①出栈操作前需要考虑栈中是否有元素,S->top<0 表示空栈 ②"下溢"现象——当栈空时,做出栈运算产生的溢出现象。 下溢是正常现象,常用作程序控制转移的条件。 顺序栈在入栈和出栈操作时的具体变化情况,分别如下图所示: 本文来源:https://www.dywdw.cn/8f0de5256f85ec3a87c24028915f804d2b168734.html