试设计一个算法,仅用一个辅助节点,实现将顺序表中的节点循环右移K位的运算。
#include<stdio.h>
#define MAX 100
typedef struct
{
int len;
int data[MAX];
}student;
void move(student *q,int n)
{
int temp,i;
while(n--)
{
temp=q->data[q->len-1];
for(i=q->len-2;i>=0;i--)
{
q->data[i+1]=q->data[i];
}
q->data[0]=temp;
}
}
int main()
{
student *p,a;
int k,i;
p=&a;
printf("请输入数字的个数:\n");
scanf("%d",&p->len);
printf("请输入%d个数:\n",p->len);
for(i=0;i<p->len;i++)
{
scanf("%d",&p->data[i]);
}
printf("请输入要移动的位数:\n");
scanf("%d",&k);
move(p,k);
for(i=0;i<p->len;i++)
{
printf("%d ",p->data[i]);
}
return 0;
}