核心代码
//顺序表
for(int i=left,j=right;i<j;++i,--j)
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
//链表
while(p->next!=q)
{
t=p->next;
p->next=t->next;
t->next=q->next;
q->next=t;
}
//将一长度为 n的数组的前端K(K<n)个元素 逆序 后移动到数组后端,要求原数组中数据不丢失
void reverse(int a[],int left,int right,int k)
{
int temp;
for(int i=left,j=right;i<left+k&&i<j;++i,--j)
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
// 将一长度为 n的数组的前端K(K<n)个元素 保持原序 后移动到数组后端,要求原数组中数据不丢失
void movetoend(int a[],int n,int k)
{
reverse(a,0,k-1,k);
reverse(a,0,n-1,k);
}