共享存储空间
发布时间: 2023-11-23 04:34:32
1. 栈的共享存储单元是什么
有时,一个程序设计中,需要使用多个同一类型的栈,这时候,可能会产生一个栈空间过小,发生溢出,而另一个栈空间过大,造成大量存储单元浪费的现象。为了充分利用各个栈的存储空间,这时可以采用多个栈共享存储单元,即给多个栈分配一个足够大的存储空间,让多个栈实现存储空间优势互补。
1.双栈为两个栈共同开辟一个存储空间,让一个栈的栈底为该空间的始端,另一栈的栈底为该空间的末端,当元素进栈时,都从两端向中间“增长”,这样能够使剩余的空间为任意一个栈所使用,即当一个栈的深度不足整个空间的一半时,另一个栈的深度可超过其一半,从而提高了存储空间的利用率。可以使用一个数组同时存两个栈,让一个栈的栈底为数组的始端,另一个栈的栈底为数组的末端,每个栈从各自的端点向中间延伸,双栈示意如图1所示。其中,MAXSTACKSIZE为整个数组空间的长度,栈1的底端固定在下标为0的一端,栈2的底端固定在下标为MAXSTACKSIZE-1的一端。top1和top2分别为栈1和栈2的栈顶指针,并约定栈顶指针指向当前元素,即栈1空的条件是top1=-1,栈1满的条件是top1==top2-1,栈2空的条件是top2=MAXSTACKSIZE,栈2满的条件是top2==top1+1。
图1两相栈共享存储单元示意