约瑟夫环

约瑟夫环

 

#include  < iostream >

typedef 
struct  LNode 
{
    
int data;
    
struct LNode *link;
}
LNode,  * LinkList;

void  JosePhus( int  n,  int  k,  int  m)
{
    LinkList p,r,curr;
    
    p
=(LNode*)malloc(sizeof(LNode));
    p
->data=1;
    p
->link=p;
    curr
=p;
    
    
for (int i=2;i<n+1;i++)
    
{
        LNode 
*t=(LNode*)malloc(sizeof(LNode));
        t
->data=i;
        t
->link=curr->link;
        curr
->link=t;
        curr
=t;
    }

    
    
while (--k)
    
{
        p
=p->link;
    }

    
while (n--)
    
{
        
for (int i=m;--i;r=p,p=p->link);
        
        r
->link=p->link;
        printf(
"%d->",p->data);
        free(p);
        p
=r->link;
    }

}


int  main( int  argc,  char *  argv[])
{
    printf(
"Hello World!\n");
    JosePhus(
13,4,2);
    
return 0;
}

你可能感兴趣的:(约瑟夫环)