ric*_*ard 5 .net stack circular-buffer
非泛型Stack类声明"Stack实现为循环缓冲区".
我不明白循环缓冲区在Stack用例中的应用.我也不明白如何将堆栈实现为循环缓冲区.
维基百科说:
循环缓冲区的有用属性是它不需要在消耗一个缓冲区时使其元素混乱.(如果使用非循环缓冲区,那么当消耗一个元素时,有必要移动所有元素.)换句话说,循环缓冲区非常适合作为FIFO缓冲区,而标准的非循环缓冲区非常适合作为 FIFO缓冲区.一个LIFO缓冲区.
循环缓冲为具有固定最大大小的队列提供了良好的实现策略.
那么......如何将堆栈实现为循环缓冲区,为什么?
我怀疑这是文档中的复制/粘贴/编辑错误;查看反射器,它不是作为循环缓冲区实现的;例如推送(在调整大小代码之后)基本上是:
this._array[this._size++] = obj;
Run Code Online (Sandbox Code Playgroud)
偷看是:
return this._array[this._size - 1];
Run Code Online (Sandbox Code Playgroud)
流行音乐是:
object value = this._array[--this._size];
this._array[this._size] = null;
return value;
Run Code Online (Sandbox Code Playgroud)
请注意,它不使用任何类型的偏移/环绕 - 因此它实际上并未使用循环缓冲区。你的直觉看起来是正确的,但文档看起来是错误的。