首先把a1~m逆置,然后把b1~n逆置,最后把整个顺序表逆置即可完成操作。
#include <stdio.h>
#define maxsize 100
typedef struct
{
int data[maxsize];
int length;
}sqlist;
void reverse(int m, int n, sqlist& l)
{
int i = 0, j = 0;
int temp = 0;
for (i = m, j = n; i < j; i++, j--)
{
temp = l.data[i];
l.data[i] = l.data[j];
l.data[j] = temp;
}
}
int main()
{
int j = 0;
sqlist L = { {1,3,5,7,2,4,6,8},8 };
reverse(0, 3, L);
reverse(4, 7, L);
reverse(0, 7, L);//三次逆置即可把前四后四个元素换位置
while (j < L.length)
{
printf("%d ", L.data[j++]);
}
return 0;
}