我有一项家庭作业,需要转移一个圆形数组-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/

10-11 23:13
查看更多