让数组的左右两端依次交换,实现数组的逆序。
这里用了两种不同的方法,但是他们的思路是一样的。
代码实现:void print(int* x, int n)
{
for (int i = 0; i < n; i++)
{
printf("%d ", x[i]);
}
}
void reverse(int x[], int n)
{
int tmp, i, j, mid;
mid = (n - 1) / 2;
for (i=0; i <= mid; i++)
{
j = n - 1 - i;
tmp = x[i];
x[i] = x[j];
x[j] = tmp;
}
}
void reverse(int* x, int n)
{
int* p, tmp, * i, * j, mid;
mid = (n - 1) / 2;
i = x;
j = x - 1 + n;
p = x + mid;
for (; i <= p; i++, j--)
{
tmp = *i;
*i = *j;
*j = tmp;
}
}
void main()
{
int a[10] = { 2,3,9,6,8,7,4,5,1,10 };
reverse(a, 10);
print(a, 10);
}



