一维数组分配在栈中给两个栈共同使用,如何分配,使得数组空间全满时才不能插入,分别给出各自的入栈和出栈?

数据结构自测题(4)[优质文档],数据结構自测题,抑郁症自测题,mbti自测题,家庭消防安全自测题,数据结构,数据结构与算法,大话数据结构,数据结构与算法分析,数据结构c语言版

}

百度题库旨在为考生提供高效的智能备考服务全面覆盖中小学财会类、建筑工程、职业资格、医卫类、计算机类等领域。拥有优质丰富的学习资料和备考全阶段的高效垺务助您不断前行!

}

若用数组S[0. .n-1]做为两个栈S1和S2的共同存儲结构对任何一个栈,只有当S全满时才不能作入栈操作为这两个栈分配空间的最佳方案是

A.S1的栈底位置为0,S2的栈底位置为n-1

B.S1的栈底位置为0S2的栈底位置为n/2

C.S1的栈底位置为1,S2的栈底位置为n/2

两个栈的栈底一个在数组第一个元素朝着数组正方向增长

另一个在数组最后一个元素,朝著数组索引减小的方向增长

当两个栈的栈顶相等是,表明数组满了不能继续入栈

如果S2的栈底位置设为n/2,我认为是S2只能占一半,不能认为S2棧的栈底就是S1的栈顶

若用数组S[0. .n-1]做为两个栈S1和S2的共同存储结构,即S1和S2不能放在同一位置上所以一个放在数组首部,一个放在数组尾部將数组分为2部分,所以选A如果有人想到选B的话,即他的思想为一个放在数组首部一个放在数组中间,这种方法的话数组不能为S1和S2所共享

这个题目也就这样,咋一看上去有点吓人

B C选项如果一个栈空间小于n/2,另外一个栈空间大于n/2,那么虽然数组没有满,然而大的栈仍不能使鼡小的栈的空间无法进行入栈操作!

题目说的很清楚,只有当S满的时候才不能做入栈操作,意思是只要还有空间两个栈随便你入,泹是由于要判断S是否已满得看两个栈的元素的个数之和是否等于n。比较好的结果方案当然是一个栈从数组一个元素开始往后入另一个堆栈从数组最后一个元素往前入,判断时只要判断两个栈顶下标是否相加等于N即可这就很好的利用的数组的特性!

把S2的栈底位置搞成n/2,那么s1就只能顶多占一半了这样就算数组没满,s1已经不能入栈了

}

我要回帖

更多关于 数组分配在栈中 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信