第1个回答 2009-04-30
/* joseph */
#include<stdio.h>
#include<stdlib.h>
typedef struct Node {
int password;
int num;
struct Node *next;
}Node,*Link;
Link joseph(int n) {
Link p,r,q;
int i;
q=(Node *)malloc(sizeof(Node));
for( i=1;i<=n;i++) {
p=(Node *)malloc(sizeof(Node));
if(!p) exit(r);//存储分配失败
printf("Please intput the %d student's password:",i);
scanf("%d",&p->password);
p->num=i;
q->next=p;
if(i==2)
r=q;
q=q->next;
if(i<n)p=p->next; };
p->next=r;
return r;
}
void print(Link r,int m,int n){
Link p,q;
int i,j;
printf("The order is:\n");
for( i=1;i<=n;i++) {
p=r;
for( j=1;j<m;j++) {
q=p;
p=p->next; } ;
m=p->password;
printf("%d ",p->num);
q->next=p->next;
r=p->next;
free(p);
};
}
void main() {
Link r;
int n,m;
printf("Please input the start number N:");
scanf("%d",&n);
printf("The first password M is:");
scanf("%d",&m);
r=joseph(n);
print(r,m,n);
}本回答被提问者采纳