首页 > 如果栈的数目多于2个,如何实现共享空间

如果栈的数目多于2个,如何实现共享空间

可以定义一个数组实现2个栈的共享,那多个栈呢


感觉题主的问题没问全,应该是限制使用某种数据结构的时候如何实现共享空间吧。

如果这么理解的话,对于使用一个一维数组来实现,目前想出来两个方法:

  1. 把一个大数组分为 N 段,每段对应于一个栈。每段的栈底都在同侧。即:

     stack 1     stack 2     stack 3     stack 4      ...  stack N
    +-----------+-----------+-----------+-----------+-----+-----------+
    |123...     |123...     |123...     |123...     | ... |123...     |
    +-----------+-----------+-----------+-----------+-----+-----------+
    
  2. 把一个大数组分为 N/2 段(N 是奇数则多分一段),每段对应于两个栈。每段的栈底在两侧。即:

     stack 1   stack 2 stack 3  stack 4  ...  stack N-1 stack N
    +-----------------+----------------+-----+-----------------+
    |123...     ...321|123...     ..321| ... |123...     ...321|
    +-----------------+----------------+-----+-----------------+
    

当然还有更多的方法啦,不过最终还是要看具体的需求是什么样的(比如时间、空间复杂度等),才能决定使用什么样的数据结构。

【热门文章】
【热门文章】