#include<stdio.h>
#include<stdlib.h>
typedef struct nodeType
{
int id;
int mi;
struct nodeType *next;
} NodeType,*Node;
NodeType *creatlist(int n)
{
int i,x;
NodeType *s,*r,*head=NULL;
for(i=0;i<n;i++)
{
scanf("%d",&x);
s=(Node)malloc(sizeof(NodeType));
s->id=i+1;
s->mi=x;
if(head==NULL)
{
s->next=NULL;
head=s;
}
else
r->next=s;
r=s;
}
r->next=head;
return head;
}
void print(Node head)
{
NodeType *temp;
temp=head;
printf("编号\t密码\n");
do
{
printf("%d\t%d\n",temp->id,temp->mi);
temp=temp->next;
}while(temp!=head);
}
void operate(Node head,int m,int n)
{
int i,j;
Node p,q,d;
p=q=head;
while(q->next!=p)
q=q->next;
for(j=0;j<n;j++)
{
for(i=1;i<m;i++)
{
q=p;
p=p->next;
}
d=p;
q->next=p->next;
p=p->next;
m=d->mi;
printf("%d ",d->id);
free(d);
}
}
int main(void)
{
int n,m;
NodeType *head;
printf("输入人数n,第初始的密码m:");
scanf("%d %d",&n,&m);
printf("输入每个人的密码(共%d个人):",n);
head=creatlist(n);
printf("输入的数据为:\n");
print(head);
printf("出队的编号依次为:");
operate(head,m,n);
return 0;
}