约瑟夫环求指导啊。。。。用的是链表,就是不知道哪里有问题编译不出来
#include <stdio.h>
#include <malloc.h>
#define ERROR 0
typedef int ElemType;
typedef struct LNode{ //创建结点
ElemType data;
struct LNode *next;
}LNode,*LinkList;
void CreatList_LinkList(LinkList L,int n)
//创建一个循环链表,并赋值1~n
{
int i;
LinkList p,q;
q=L; //q为头指针
L->data=1;
for (i=1;i<=n;i++){
p=(LinkList)malloc(sizeof(LNode));
if(!p) return ERROR;
p->data=i+1;
q->next=p;
p->next=L;
q=p;
}
}
LinkList LookFor_LinkList(LinkList L,int m)
//找到开始的其实节点
{
int i;
LinkList p;
p=L;
for(i=1;i<m;i++) p=p->next;
return p;
}
void Josephus(LinkList L,int m,int k)
{
int i,j;
ElemType e;
LinkList p,s,q;
s= LookFor_LinkList(L, m);
p=s;
q=s;
if(L){
for(i=1;i<k-1;i++) p=p->next;
for(j=1;j<=k;j++) q=q->next;
e=p->next->data;
free(p->next);
p->next=q;
printf("%d ",e);
}
}
void main(){
LinkList L;
CreatList_LinkList( L,9);
LookFor_LinkList(L,1);
Josephus(L,1,5);
}