【#文档大全网# 导语】以下是®文档大全网的小编为您整理的《顺序栈的类型定义》,欢迎阅读!
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.wddqxz.cn/8f0de5256f85ec3a87c24028915f804d2b168734.html