Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用C+在一个阵列中实现3个堆栈+; 想知道如何用C++来完成。_C++_Stack - Fatal编程技术网

使用C+在一个阵列中实现3个堆栈+; 想知道如何用C++来完成。

使用C+在一个阵列中实现3个堆栈+; 想知道如何用C++来完成。,c++,stack,C++,Stack,将给定数组分为3部分-(0-N/3),(N/3-2N/3),(2N/3-N)。我如何跟踪溢出量 谢谢 Kelly您必须为每个堆栈维护指向顶部的指针。为什么不检查这些指针没有超出它们的边界?这样所有堆栈的大小都是相等的,并且不能增长。对吧?对。假设数组大小是300。@Kelly:void push(int-stacknum,T-data){if(top[stacknum]==(N/3)*stacknum){error(“overflow”);}否则{/*push*/}}。当然有这样的可能性,但如果

将给定数组分为3部分-(0-N/3),(N/3-2N/3),(2N/3-N)。我如何跟踪溢出量

谢谢
Kelly

您必须为每个堆栈维护指向顶部的指针。为什么不检查这些指针没有超出它们的边界?

这样所有堆栈的大小都是相等的,并且不能增长。对吧?对。假设数组大小是300。@Kelly:
void push(int-stacknum,T-data){if(top[stacknum]==(N/3)*stacknum){error(“overflow”);}否则{/*push*/}}
。当然有这样的可能性,但如果你“牺牲”了每个stackpart的一个字,你就可以避免用户在某处跟踪stacknum。一个更好的API imho的开销可以忽略不计。@Voo:我假设所有这些都将封装在某个结构中,同时还有一个隐藏所有细节的漂亮接口@奥利,但是我如何找到顶层元素的索引呢?我试过这样的东西。为了维护指针,我声明了另一个数组(不确定这是否正确)int*arrayPointer[3]={NULL,NULL,NULL};//最初指向NULL时,让每个堆栈的大小为300,所以我的数组大小为每个堆栈的3*大小。int sizeOfStack=300;int*buffer=newint[3*sizeofStack];这之后我一片空白。void push(int stackNum,int value)@Kelly:你可以维护指针或索引。指针应该是:
for(i=0;i<3;i++){arrayPointer[i]=&buffer[sizeofStack*i];}
。索引将是:
intarrayindices[3];对于(i=0;i<3;i++){arrayIndices[i]=sizeofStack[i];}