可以定义一个数组实现2个栈的共享,那多个栈呢
感觉题主的问题没问全,应该是限制使用某种数据结构的时候如何实现共享空间吧。
如果这么理解的话,对于使用一个一维数组来实现,目前想出来两个方法:
-
把一个大数组分为 N 段,每段对应于一个栈。每段的栈底都在同侧。即:
stack 1 stack 2 stack 3 stack 4 ... stack N +-----------+-----------+-----------+-----------+-----+-----------+ |123... |123... |123... |123... | ... |123... | +-----------+-----------+-----------+-----------+-----+-----------+
-
把一个大数组分为 N/2 段(N 是奇数则多分一段),每段对应于两个栈。每段的栈底在两侧。即:
stack 1 stack 2 stack 3 stack 4 ... stack N-1 stack N +-----------------+----------------+-----+-----------------+ |123... ...321|123... ..321| ... |123... ...321| +-----------------+----------------+-----+-----------------+
当然还有更多的方法啦,不过最终还是要看具体的需求是什么样的(比如时间、空间复杂度等),才能决定使用什么样的数据结构。