数据结构猴子选大王java_数据结构例子-猴子选大王

约瑟夫问题(猴子选大王):   n只猴子要选大王,选举办法如下:所有猴子按1,2,…,n编号围坐一圈,从第一号开始按1,2,…,m报数,凡报m号的推出圈外,如此循环报数,直到圈内剩下一只猴子时,这只猴子就是大王.n和m由键盘输入,打印出最后剩下的猴子号.     由于很多书上都有的习题,以及很多人问所以...     #include        #include        struct   Link{         int   id;         Link   *next;     };     void   Initialize(int   n,   Link   *head)     {         int   i;         Link   *p;         for   (i   =   1,   p   =   head;   i   <=   n;   i++){             p->next   =   (Link   *)   malloc   (sizeof(Link));             p   =   p->next;             p->id   =   i;         }         p->next   =   head->next;     }         void   Delete(Link   *node)     {         Link   *temp;         temp   =   node->next;         printf("%d     ",   node->next->id);         node->next   =   temp->next;         free(temp);     }     void   main()     {         Link   *head,   *p;         int   n,   i,   k;         printf("%s","Input   n,k   =   ");         scanf("%d%d",   &n,   &k);         head   =   (Link   *)   malloc   (sizeof(Link));         head->next   =   (Link   *)   malloc   (sizeof(Link));         Initialize(n,   head);         for   (p   =   head,   i   =   1;   p   !=   p->next;   p   =   p->next,   i++){             if   (i   ==   k){                 i   =   1;                 Delete(p);             }         }         printf("\n");         printf("%d",   p->id);     }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值