写出顺序表实现任意n个整数的就地逆置算法

作者: admin 分类: 未分类 发布时间: 2018-11-20 00:07

设有一个顺序表A,包含n个元素,要求写出一个将该表逆置的算法,

算法基本思想:将数组的第一个元素与最后一个交换,第二个与倒数第二个交换,第三个与倒数第三个交换,直到结束。其中,定义一个临时变量,以便交换之用。

 #include <stdio.h>
#define MaxLen 50
typedef int elemtype;
typedef elemtype sqlist[MaxLen];

int create (sqlist A)
{
    int i,n;
    printf("创建一个顺序表\n");
    printf("输入元素个数:");
    scanf("%d", &n);
    for (i=0;i<n;i++)
    {
        printf("输入第%d个元素值:", i+1);
        scanf("%d", &A[i]);
    }
    return n;
}

void invert(sqlist A,int n)
{
    int m=n/2,i;
    elemtype temp;
    for (i=0;i<m;i++)
    {
        temp=A[i];
        A[i]=A[n-i-1];
        A[n-i-1]=temp;/*交换*/
    }
}
void disp(sqlist A, int n)
{
    int i;
    for(i=0;i<n;i++)
    {
        printf("%d", A[i]);
    }
    printf("\n");
}
void main()
{
    sqlist A;
    int n;
    n = create(A);
    disp(A, n);
    invert(A, n);
    disp(A, n);
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注