约瑟夫环问题(环形链表)
php算法
php算法
<?php header("content-type:text/html;charset=utf-8"); class Child{ public $no; public $next=null; public function __construct($no){ $this->no=$no; } } function addChild($n,&$first){ //$n是小孩个数,创建环形链表 for($i=0;$i<$n;$i++){ $child=new Child($i+1); if($i==0){ $first=$child; $cur=$child; $cur->next=$cur; }else{ $cur->next=$child; $child->next=$first; $cur=$cur->next; } } } function showHero($first){ $cur=$first; while($cur->next!=$first){ echo "<br/>小孩编号:".$cur->no; $cur=$cur->next; } echo "<br/>小孩编号:".$cur->no; } function countChild($first,$m,$k){ $cur=$first; for($i=0;$i<$m-1;$i++){ $cur=$cur->next; } $j=0; while($cur!=$cur->next){ if($j==$k-2){ echo "<br/>出列编号:".$cur->next->no; $cur->next=$cur->next->next; $cur=$cur->next; $j=0; }else{ $cur=$cur->next; $j++; } } echo "<br/>最后出列编号:".$cur->no; } addChild(10,$first); showHero($first); echo "<hr/>"; countChild($first,2,3); //第二个小孩开始数,数到三出列 ?>
- 上一篇:PHP的AES加密类
- 下一篇:仿iPad界面的在线群聊
精彩图集
精彩文章