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; 
}

收~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值