我有一项家庭作业,需要转移一个圆形数组-n在内存中的位置。
我已经使用以下C++语法完成了任务:
while ( r < 0 ) // rotate negatively.
{
if ( i == top+1 )
{
current->n = items[top+1].n;
items[top+1].n = items[back-1].n;
}
midPtr->n = items[++i].n;
items[i].n = current->n;
if ( i == back-1 )
{
items[back-1].n = current->n;
i = 0;
r++; continue;
}
else
{
current->n = items[++i].n;
items[i].n = midPtr->n;
if ( i == back-1 )
{
i = 0;
r++; continue;
}
}
}
我想知道是否有人有更好,更有效的
将循环数组移动-n个单位的方法。
因为我似乎正在执行不必要的转帐
ptr变量之间。
最佳答案
不给您代码(毕竟这是一项家庭作业),请考虑一下...
循环数组只是内存中n个单元的分配和一个指向数组“开始”的指针。数组中的第一项不必是分配的内存中的最低地址,而只需指向数组中代表逻辑第一元素的项的指针/索引。移动数组仅是移动第一个元素的索引。考虑到数据结构的循环特性,它可以无循环地完成,只需计算索引需要移动多远。
关于c++ - 移位圆形阵列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1452545/