我的“约瑟夫环”代码,大家看看 啊!
#include <stdio.h>#include <stdlib.h>
#define N 7 /*N为用户根据需要自己定义的一组总人数*/
typedef struct Node /*定义结构体链表*/
{
int num;
int key;
struct Node *next;
}*LinkList,Node;
void CreateList(LinkList L) /*创建链表L*/
{
int i;
Node *r,*s;
r=L;
for(i=1;i<=N;i++)
{
s=(Node*)malloc(sizeof(Node));
s->num=i;
printf("输入第%d个人的密码: ",i);
scanf("%d",&s->key);
r->next=s;
r=s;
}
r->next=L->next;
}
void DelList(LinkList L,int m) /*删除链表中的某一个元素*/
{
int k=0,j,a[N],b[N];
Node *r,*s;
r=L;
s=r->next;
while(k<N)
{
for(j=1;j<m;j++)
{
r=s;
s=s->next;
}
r->next=s->next;
a[k]=s->key;
b[k]=s->num;
s=s->next;
m=a[k];
k++;
}
printf("\n这组人群的出列顺序为:");
for(k=0;k<N;k++)
{
printf("%d ",b[k]);
}
}
int main()
{
int m,i;
LinkList L;
printf("给m赋初值:");
scanf("%d",&m);
L=(LinkList)malloc(sizeof(Node));
CreateList(L);
DelList(L,m);
free(L);
return 0;
}