栈的顺序表示


用顺序存储方式来存储的,就是顺序栈。

存储方式:同一般线性表的顺序存储结构完全相同

李用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素。栈底一般在低地址端口。

附设 top 指针,指示栈顶元素在顺序栈中的位置。

另设 base 指针,指示栈底元素在顺序栈中的位置。

 

但是!!!!!为了方便操作,通常 top 指示真正的栈顶元素之上的下标地址,也就是比 an 高一位的下标地址。

另外,用 stacksize 表示栈可用的最大容量。

第一个元素存放在下标为 0 的位置,最后一个元素存放在下标为 n-1 的位置

 

---------------------------------------------------------------------------------

 

 

这个栈里最多能放四个值,即最大容量为4,这个栈一开始没有存放元素,也就是一个空栈。

top == base 是栈空标志

 

入栈:(元素A进栈)

 

这时 top 指针向后移动一格,移动到下标为1的位置。

接着 B,C,D依次进栈:

 

注意 top 指向位置,那么判断栈满时,可以如下:top - base == stacksize

不发生溢出的情况下,top - base ≤ stacksize

栈满时的处理方法:

① 报错,返回操作系统

② 分配更大的空间,作为栈的存储空间,将原栈的内容移入新栈(一般不采用这种方式,耗费时间过多)

 

出栈:每出栈一个,top指针下移一格

 

 -------------------------------------------------------------------------------------

使用数组作为顺序栈的存储方式的特点:简单方便、但易产生溢出(数组大小固定)

上溢(overflow):栈已经满,又要压入元素

下溢(underflow):栈已经空,还要弹出元素

注:上溢是一种错误,使问题的处理无法进行;而下溢一般认为是一种结束条件,即问题处理结束。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM