龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

php 约瑟夫环问题(环形链表)

时间:2014-07-20 02:03来源:网络整理 作者:网络 点击:
分享到:
约瑟夫环问题(环形链表) [代码片段(61行)]
<?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); //第二个小孩开始数,数到三出列

?>
//该片段来自于http://outofmemory.cn
精彩图集

赞助商链接