今天先讲两个简单的顺序表移动.(今天要用到函数了,大家不会的赶紧复习复习哦!)
不难看出目的就是把素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;
}
我是小纸人,谢谢大家.
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/85960.html