我想知道为什么我在'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
)。