小议多个栈联合使用的优点
3.多个栈的情况:共享空间平分使用,溢出平移,栈顶,栈底指针说明为数组,使用较为方便,如图所示:
S[1] 1 2 …… N S[M]
t[1]=b[1] t[2]=b[2] t[N]=b[N] b[N+1]=M
t[1]表示第一个栈的栈底指针 每当入栈时栈底(从图上看)向右移 当t[1]=t[1+1]时 表示第一个栈上溢出 相似的 当在第i个栈进行入栈操作时 t[i]右移 当t[i]=t[i+1]时 表示第i个栈上溢出 当i>N时 这个多栈空间被用完 即组合栈上溢出 执行入栈操作结束 若想弹出第i个栈进行操作(如访问第j个合法值 并用e返回) 则只需e=b[i+j-1] 十分方便 其实多个栈的组合使用就是采用二维数组的形式 行存储的是栈顶指针(与单个栈不同的是 此时栈顶的下标小于栈底)列存储的是从第i个栈栈顶开始的元素 这是对顺序栈的操作就简单多了 尤其是访问操作 删除和插入也可以在任意合法的位置(与单个栈中只能在栈顶进行插入和删除操作形成鲜明对比)并且当单个栈上溢出时 可以用下一个栈补足正使用栈的空间
用组合链栈更好