我有一个家庭作业,要求必须在内存中移动一个圆形阵列-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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有人有更好,更有效的方法将圆形阵列移动-n单位.
因为我似乎在ptr变量之间执行不必要的转移.
Jam*_*aro 10
没有给你代码(这毕竟是一个家庭作业)考虑这个...循环数组只是内存中n个单位的分配和指向数组"开始"的指针.数组中的第一项不必是分配的内存中的最低地址,而只是数组中表示逻辑第一个元素的项的指针/索引.移动数组只是移动第一个元素的索引.它可以在没有循环的情况下完成,只需计算索引需要移动的距离 - 考虑数据结构的循环性质.