将一个顺序表的前三个元素移到最后

//1.第一个(两个其实差不多,只不过我比较喜欢用后者)

#include <stdio.h>
void move(int *a,int n)//指针a接收数组首元素的地址
{
    int i,j,X;
    int *p=a;//指针p也指向a数组
    for(i=0;i<3;i++)
    {
        X=*a;//*a代表数组的第一个元素
        for(j=1;j<n;j++)
        {
            *(p+j-1)=*(p+j);
        }
        *(p+j-1)=X;
        
    }
}
int main (void)
{    int a[8]={3,2,5,8,4,7,6,9};
    int i;
    move(a,8);
    for(i=0;i<8;i++)
        printf("%5d",a[i]);
    printf("\n");
    return 0;
}

//第二个
#include <stdio.h>
void move(int *a,int n)//指针a接收数组首元素的地址
{
    int i,j,X;
    for(i=0;i<3;i++)
    {
        X=a[0];
        for(j=1;j<n;j++)
        {
            a[j-1]=a[j];
        }
        a[j-1]=X;
        
    }
}
int main (void)
{    int a[8]={3,2,5,8,4,7,6,9};
    int i;
    move(a,8);
    for(i=0;i<8;i++)
        printf("%5d",a[i]);
    printf("\n");
    return 0;
}

猜你喜欢

转载自blog.csdn.net/L_Z_jay/article/details/105640243