(5)判栈空否 int empty ( seqstack s) f(s top==0)return l; else return 0;
(5) 判栈空否 int empty(seqstack s) { if (s.top= =0) return 1;else return 0; }
3.栈的共享存储单元 有时,一个程序设计中,需要使用多个同一类型的栈 这时候,可能会产生一个栈空间过小,容量发生溢出 而另一个栈空间过大,造成大量存储单元浪费的现象 为了充分利用各个栈的存储空间,这时可以采用多个 栈共享存储单元,即给多个栈分配一个足够大的存储 空间,让多个栈实现存储空间优势互补 栈1底 栈2底 栈1顶 栈2顶 图3-3两个栈共享存储单元示意图
3.栈的共享存储单元 有时,一个程序设计中,需要使用多个同一类型的栈, 这时候,可能会产生一个栈空间过小,容量发生溢出, 而另一个栈空间过大,造成大量存储单元浪费的现象。 为了充分利用各个栈的存储空间,这时可以采用多个 栈共享存储单元,即给多个栈分配一个足够大的存储 空间,让多个栈实现存储空间优势互补。 栈 1 顶 栈 2 顶 栈 1 底 栈 2 底 图 3-3 两个栈共享存储单元示意图
两个栈共享存储单元可用如下C++语句描述: CoNST int maxsize=maxlen, / maxlen为共享单元 的最大长度 Struct dusegstack f elemtype stack[maxsize Int top[2];∥两个栈的栈顶指针
两个栈共享存储单元可用如下C++语句描述: CONST int maxsize=maxlen; //maxlen为共享单元 的最大长度 Struct duseqstack { elemtype stack[maxsize]; int top[2] ; //两个栈的栈顶指针 ……… };
(1)两个栈共享存储单元的进栈算法 void dupush( duseqstack &s, elemtype x, int k) 将元素x进入到以S为栈空间的第k个栈中 A I(s top[O1+1-s. top[l D cout<< overflow else if (k==0)( S top[0J++, S Stack[s top[OJ=x; 1 else s top[1]--,S stack[s top[1=x; 3
(1)两个栈共享存储单元的进栈算法 void dupush(duseqstack &s, elemtype x, int k) //将元素x进入到以S为栈空间的第k个栈中 { if (s.top[0]+1==s.top[1]) cout<<“overflow” else if (k==0) { s.top[0]++;s.stack[s.top[0]]=x;} else {s.top[1]--; s.stack[s.top[1]]=x;} }
(2)两个栈共享存储单元的退栈算法 void pop( duseqstack &s, int k) 将以s为栈空间的栈中第k个栈进行退栈 if((k==0)&&(s top[0]==0) cout<<"underflow else if (k===1)&&(s top[1]==maxsize) cout<<underflow else if(k-=0)S top[- else S top[1++
(2)两个栈共享存储单元的退栈算法 void pop(duseqstack &s, int k) //将以s为栈空间的栈中第k个栈进行退栈 { if ((k==0)&&(s.top[0]==0)) cout<<”underflow”; else if ((k==1)&&(s.top[1]==maxsize) cout<<”underflow”; else if(k==0) s.top[0]--; else s.top[1]++; }