Algorithm 什么是修改过的Garwick';到底是什么算法?

Algorithm 什么是修改过的Garwick';到底是什么算法?,algorithm,stack,Algorithm,Stack,Garwick算法是一种处理堆栈溢出的算法。我知道最初的算法是什么以及它是如何工作的。然而,有一个改进的Garwick算法,我对它有一个非常模糊的描述“偶数堆栈在左方向增长,奇数堆栈在右方向增长” 我的课堂讲稿中对修改后的算法的说明如下,这也是非常模糊的 有人能提供更多关于这个改进算法的细节,或者提供一些参考吗?谢谢大家! 如果需要在一个数组中放置两个堆栈,则可以在数组的开始处放置一个堆栈,在推动元素时向上生长,在末尾放置一个堆栈,向下生长 这样,您就不必担心在其中一个堆栈已满时重新分配可用空

Garwick算法是一种处理堆栈溢出的算法。我知道最初的算法是什么以及它是如何工作的。然而,有一个改进的Garwick算法,我对它有一个非常模糊的描述“偶数堆栈在左方向增长,奇数堆栈在右方向增长”

我的课堂讲稿中对修改后的算法的说明如下,这也是非常模糊的


有人能提供更多关于这个改进算法的细节,或者提供一些参考吗?谢谢大家!

如果需要在一个数组中放置两个堆栈,则可以在数组的开始处放置一个堆栈,在推动元素时向上生长,在末尾放置一个堆栈,向下生长

这样,您就不必担心在其中一个堆栈已满时重新分配可用空间,因为它们都使用相同的可用空间,您可以自由地推到任意一个堆栈上,直到整个数组已满

您提到的改进的Garwick算法将此思想扩展到了两个以上的堆栈。在最初的Garwick算法中,阵列被划分为N个段,每个段有一个堆栈,所有堆栈沿同一方向增长。在修改后的版本中,阵列被分成N/2个段,每个段有2个堆栈,一个从段的开始向上生长,一个从段的结束向下生长

在改进的算法中,当一个段填满时,可用空间在段(堆栈对)之间重新分配,就像原始算法在单个堆栈之间重新分配空间一样