C语言程序设计--数组滚动(指针)

题目:实现数组的滚动 (右滚动)

目前有两种思路:

1、设定两个同等长度 L 的数组a1、a2,(a1用来存放原数据,a2用来存放要移动的越界数据)。设定移动偏移量 n(小于L),将a1后n个数据存到a2中,然后将a1数组的数据从L-n下标处开始往后移,然后将存放的a2数据放在a1的前n个位置。

2、利用指针,设定指针p、a_end,变量last,偏移量n,每次存放数组最末尾数据于last中,每次将数组a中的数据向后移动1个,将last数据存放到数组a的首位,循环n次,最终得到滚动完毕的数据。

思路一代码如下:

不如思路二,不敲了

思路二代码如下:
 

while(n) 
{ 
    last=*(a_end-1);
    for(p=a_end-1;p!=a;--p) //向右滚动一位
        *p=*(p-1);
    *a=last;
    --n; 
}

收~

你可能感兴趣的:(C语言)