#include <stdio.h>
#include <stdlib.h>
struct node
{
int *h, len, size;
}list;
void creat()
{
list.h = (int *)malloc(1000005 * sizeof(int));
}
void get(int n)
{
for(int i = 1; i <= n; i++)
{
scanf("%d", &list.h[i]);
}
}
void exchange(int l, int r)
{
int len = (l + r) / 2;
for(int i = l; i <= len; i++)
{
int t = list.h[i];
int loc = r - (i - l);
list.h[i] = list.h[loc];
list.h[loc] = t;
}
}
void change(int n, int m)
{
exchange(1, n);
exchange(1, n - m);
exchange(n - m + 1, n);
}
void print(int n)
{
for(int i = 1; i <= n; i++)
{
if(i != 1)printf(" ");
printf("%d", list.h[i]);
}
printf("\n");
}
int main()
{
int n, m, x, i;
scanf("%d", &n);
creat();
get(n);
scanf("%d", &m);
for(i = 1; i <= m; i++)
{
scanf("%d", &x);
change(n, x);
print(n);
}
return 0;
}
SDUT - 3663 顺序表应用4-2:元素位置互换之逆置算法(数据改进)
猜你喜欢
转载自blog.csdn.net/Miracle_QSH/article/details/82391758
今日推荐
周排行