假设以顺序存储结构实现一个双向栈,即在一维数组的存储空间中存在着两个栈,它们的栈底分别设在数组的两个端点。试编写实现这个双向栈 tws 的三个操作:初始化inistack(tws)、入栈push(tw
时间: 2023-06-05 13:47:34 浏览: 208
采用顺序存储实现栈的初始化、入栈、出栈操作
这道题要求用顺序存储结构实现一个双向栈,在一个一维数组的存储空间中存在着两个栈,它们的栈底分别设在数组的两端。尝试编写实现这个双向栈的三个操作:初始化inistack(tws)、入栈push(tw)、和出栈pop(tw)。
- 初识化inistack(tws):这个操作需要将两个栈底的指针都初始化为-1,表示两个栈都是空的。
- 入栈push(tw):这个操作需要根据具体情况,将元素tw入栈到栈1或者栈2中。具体来说,如果栈1的栈顶指针top1+1等于栈2的栈顶指针top2,那么说明两个栈已经满了,此时无法入栈;否则就要根据top1和top2的值来判断入栈的是哪个栈。比如,如果top1+1<top2,说明栈1还有空间,那就在top1+1的位置插入元素tw即可;如果top1+1>=top2,则说明栈1没有空间了,需要把元素tw插入到栈2中,具体位置就是top2-1的位置。
- 出栈pop(tw):这个操作同样需要根据具体情况来实现。如果要弹出栈1的元素,就需要将栈1的栈顶指针top1-1,同时返回top1+1位置上的元素;如果要弹出栈2的元素,就需要将栈2的栈顶指针top2+1,同时返回top2-1位置上的元素。如果某个栈已经空了,就返回一个特定的值,比如-1表示出栈失败。
阅读全文