我想知道为什么我在'intFront'中的数据不一样。我将数组中的元素向左移动:

void stack::rotate(int nRotations)
{
    for (; nRotations > 0 ;) // Number of Rotations to the left
    {
        intFront = &items[top+1].n;
        for ( int shiftL = 0; shiftL < count-1; shiftL++ )
        {
            items[shiftL] = items[shiftL+1]; // shift left from the front
        }
        items[count-1].n = *intFront;
        nRotations--; // decrement=0 will indicate no more rotations left
    }
}


发生的是将数组的第一个值或“ head”或“ front”放入可变的“ intFront”中。我旋转给定旋转次数后剩下的所有内容,希望最后进行一次简单的传输。可能不会..

最佳答案

您超出了数组的范围:在最后一次迭代中,对items[shiftL+1]的读取超出了数组的范围,
您将指向结构成员的指针保存到intFront中,然后在内部循环中按值覆盖这些结构-这将确保更改值intFront指向,
无需进行多个复制,即不需要两个嵌入式循环,因为您知道需要移位多少(nRotations)。

09-06 12:39