用指针实现数组元素多次逆置(用指针实现数组循环移动)

本文介绍了如何通过三次逆置操作实现数组中前m个元素移动到末尾的功能,详细解析了逆置过程的关键步骤和中值选取,并提供了C语言实现的代码示例。此外,还探讨了如何调整代码来实现数组元素右移m个位置的情况,强调了指针操作和中值选取的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hello,小伙伴们,大家好,废话不多说,先上题:
对长度为n的数组,先实现逆置前m个,再逆置其后面的,最后再整个逆置

关于利用指针逆置主要靠以下小操作;

t=*p,*p=*q.*q=t;

这不就是其核心吗,对,但也不完全对?更重要的在中值的选取:
mid=(末尾数下标+初始数下标)/2;

这一步理解可是关键,你也可以自己写几个数试一下

好了,现在解释为什么有两个标题:

用多次逆置的方法比如:       本题用三次逆置可以实现数组前m个元素移动到末尾,像是数组向左移动了m个长度:例如当m为3时,对数组(0 1 2 3 4 5 6 7 8 9)可至(3 4 5 6 7 8 9 0 1 2)

好了,理解上面之后咱就上代码了:

#include <stdio.h>

int main()

{

    int a[100],n,m,t,*p,*q;

    scanf("%d",&n);//输入整数个数

    for(i=0;i<n;i++)

    {

        scanf("%d",&a[i]);

    }

    p = a;

    scanf("%d",&m);//输入移动位数

    /***** 首先逆置数组前m个元素 *****/

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值