好吧,如果您只担心空间使用情况,而不关心堆栈操作可以占用O(N),则可以使用数组的前几个单元来管理堆栈:
Array[0]- 堆栈末尾 0
Array[1]- 堆栈1的末尾
...
Array[K-1]= 堆栈 K 的末尾
堆栈n开始于Array[n-1]并结束于Array[n] (exclusive - [Array[n-1], Array[n]) )。If Array[n-1]==Array[n]堆栈是空的。第一个堆栈从 K 开始,所以首先Array[0]..Array[K-1] = K
压入栈时,只需将其下方栈中的所有元素移动,并分别调整指针即可。
它会给你带来你需要的内存限制。