约瑟夫环的算法

数据结构的里约瑟夫环的一种简单有效的算法:

《约瑟夫环的算法》#include stdio.h

《约瑟夫环的算法》#include 

stdlib.h

《约瑟夫环的算法》
《约瑟夫环的算法》

struct
 circle
《约瑟夫环的算法》《约瑟夫环的算法》

{
《约瑟夫环的算法》    
int
 ID;
《约瑟夫环的算法》    
struct circle*
 next;
《约瑟夫环的算法》}

;
《约瑟夫环的算法》
《约瑟夫环的算法》
int main(int argc, char*

 argv[])
《约瑟夫环的算法》《约瑟夫环的算法》

{
《约瑟夫环的算法》    
int
 n,m,i;
《约瑟夫环的算法》
《约瑟夫环的算法》    scanf(
%d %d&n, &
m);
《约瑟夫环的算法》
《约瑟夫环的算法》    
struct circle* start=(struct circle*)malloc(sizeof(struct circle*
));
《约瑟夫环的算法》    
struct circle* c; int person =
 n;
《约瑟夫环的算法》
《约瑟夫环的算法》    start
->ID=1
;
《约瑟夫环的算法》    
《约瑟夫环的算法》    c
=
start;
《约瑟夫环的算法》
《约瑟夫环的算法》    
for(i=1;i<=n;i++
)
《约瑟夫环的算法》《约瑟夫环的算法》    
{
《约瑟夫环的算法》        c
->next=(struct circle*)malloc(sizeof(struct circle*
));
《约瑟夫环的算法》        c
->next->ID=i+1
;
《约瑟夫环的算法》        
if(i==
n)
《约瑟夫环的算法》            c
->next=
start;
《约瑟夫环的算法》        
else

《约瑟夫环的算法》            c
=c->next;
《约瑟夫环的算法》    }

《约瑟夫环的算法》
《约瑟夫环的算法》    
while((c!=c->next))
《约瑟夫环的算法》《约瑟夫环的算法》    
{
《约瑟夫环的算法》        
for(i=1;i<=m;i++
)
《约瑟夫环的算法》《约瑟夫环的算法》        
{
《约瑟夫环的算法》            
if(i==
m)
《约瑟夫环的算法》《约瑟夫环的算法》            
{
《约瑟夫环的算法》                person
;
《约瑟夫环的算法》                c
->next=c->next->
next;
《约瑟夫环的算法》            }

《约瑟夫环的算法》            
else
《约瑟夫环的算法》《约瑟夫环的算法》            
{
《约瑟夫环的算法》                c
=c->
next;
《约瑟夫环的算法》            }

《约瑟夫环的算法》        }

《约瑟夫环的算法》    }

《约瑟夫环的算法》    

《约瑟夫环的算法》    
do

《约瑟夫环的算法》《约瑟夫环的算法》    
{
《约瑟夫环的算法》        printf(
%d , c->
ID);
《约瑟夫环的算法》        c
=c->
next;
《约瑟夫环的算法》        person
;
《约瑟夫环的算法》    }

《约瑟夫环的算法》    
while(c!=c->next

);
《约瑟夫环的算法》    putchar(
);
《约瑟夫环的算法》    
return 0
;
《约瑟夫环的算法》}

约瑟夫环所描述的是:
N个人围成一圈由1-N编队由1-M连续报数,当某人报到M时,该人出队,从下一个人开始由1-M继续报数,并不断重复此过程,直到所剩人数不足M时停止。

    原文作者:约瑟夫环问题
    原文地址: https://blog.csdn.net/frontgoggle/article/details/1638409
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞