顺序表移动

​​今天先讲两个简单的顺序表移动.(今天要用到函数了,大家不会的赶紧复习复习哦!)

以1,2,3,4,5,6输出2,3,4,5,6,1为例。

不难看出目的就是把元素1, 挪到最后面。

下面先讲两种简单的解决方案:

①   先把1存起来,再把数组每个元素前移,最后把1填到最后面.

怎么前移呢??

a[0]=a[1];

a[1]=a[2];

   …

a[j]=a[j+1];

直到跑完数组.这个比较简单这里就不多讲了,直接附上代码吧:

#include<stdio.h>

void simplemove(int a[],int n)// //因为直接输出了,没有返回值,为void型

{

int j=0,x;

x=a[j];//把第一位存起来

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

           a[j]=a[j+1];//把后一位给前一位

a[j]=x;//把最后一位补上

}

int main(void)

{

int a[6]={1,2,3,4,5,6};

int i;

simplemove(a,6);//简单移动

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

           printf("%5d",a[i]);

return 0;

}

②把1依次和自己的下一位交换.

1 2 3 4 5 6

1和2交换 2 1 3 4 5 6

1和3交换 2 3 1 4 5 6

1和4交换 2 3 4 1 5 6

    …

1和6交换 2 3 4 5 6 1

{

x=a[j];

a[j]=a[j+1];

           a[j+1]=x;

}

这是一个最简单的交换算法,不懂得自己用笔画一画就会了.

直到跑完数组.这个也比较简单这里就不多讲了,直接附上代码吧:

#include<stdio.h>

void exchangemove(int a[],int n)//因为直接输出了,没有返回值,为void型

{

int j=0,x;

for(j=0;j<n;j++)//普通交换算法

{

           x=a[j];

           a[j]=a[j+1];

           a[j+1]=x;

    }

}

int main(void)

{

int a[6]={1,2,3,4,5,6};

int i;

exchangemove(a,6);//交换式移动

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

           printf("%5d",a[i]);

return 0;

}

​我是小纸人,谢谢大家.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值