转载的
#include<stdio.h>
#include<malloc.h>
typedef struct LNode{
int id,pwd; //id用来存储人的序号,pwd用来存储人的密码
struct LNode *next; //指向下一个的指针
}List;
struct LNode *head,*p,*pd;
/*创建循环链表函数*/
int createLinkList(int n){
int i;
head = (struct LNode *)malloc(sizeof(struct LNode)); //创建一个带头结点的链表
if(!head) return 0; //创建不成功,返回0
p = head;
for(i = 1 ; i < n ; i++){
pd = (struct LNode*)malloc(sizeof(struct LNode));
if(!pd) return 0;
p->next = pd;
p = pd;
}
p->next = head;
pd = head;
return 0;
}
/*输入密码函数*/
int inputPwd(int n){
int j,k;
printf("\n请输入每个人的密码:\n");
for (j=1;j<=n;j++){
scanf("%d",&k);
pd->id = j;
pd->pwd = k;
pd = pd->next;
}
pd = p;
return k;
}
/*输出出列序号函数*/
int outList(int m,int n){
int q,r;
for(q=1;q<=n;q++){
for(r=1;r<m;r++) {
pd = pd->next;
}
p = pd->next;
m = p->pwd;
printf("%d ",p->id);
pd->next = p->next;
free(p);
}
return 0;
}
int main(){
int m,n1;
scanf("%d %d",&n1,&m);
createLinkList(n1);
inputPwd(n1);
// printf("%d",p->pwd);
outList(m,n1);
return 0;}