顺序表移动

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

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

}

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


阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页