美文网首页
数据结构

数据结构

作者: 散装咖啡 | 来源:发表于2017-03-04 01:21 被阅读16次

    //环型链表 数据结构

    class CircleLink{

    public $number;

    public $next=null;

    public function __construct($number){

    $this->number=$number;

    }

    }

    //添加对象

    function addCircle($n){

    $cur=null;

    $first=null;

    for($i=1;$i<=$n;$i++){

    $child=new CircleLink($i);

    //说明是第一个对象

    if($i==1){

    $first=$child;

    $first->next=$first;//这里为什么要写这句呢,大家想想,如果不写这句话,

    //如果只创建一个对象,怎么办,那么他就不是环型链表了,所以写这句话,就是你创建一个

    //对象也是环型链表,我让他自己指向自己,这样也是一个圆环呀,其实也可以不写的。

    $cur=$child;

    }else{

    $cur->next=$child;

    $child->next=$first;

    $cur=$cur->next;

    }

    }

    return $first;

    }

    //查看环型链表

    function showCircle($first){

    $cur=$first;//这里使用了一个巧妙的方法,把first再赋值给一个临时对象

    while($cur->next!=$first){

    echo $cur->number."《br /》";

    $cur=$cur->next;

    }

    echo $cur->number;

    }

    function countCircle($first,$m=1,$k=2){

    $cur=$first;

    while($cur->next!=$first){

    $cur=$cur->next;

    }

    for($i=0;$i<$m-1;$i++){

    $cur=$cur->next;

    $first=$first->next;

    }

    //退出循环说明,$cur指向是最后一个对象

    //循环一个,执行两句代码,即循环一下,数2个数

    while($cur!=$first){

    for($n=0;$n<$k-1;$n++){

    $cur=$cur->next;

    $first=$first->next;

    }

    echo "要出圈的小孩是:".$first->number."《br /》";

    $cur->next=$first->next;

    $first=$cur->next;

    }

    echo "最后一个人是:".$cur->number."《br /》";

    }

    echo "《meta http-equiv='content-Type' content='text/html;charset=utf-8'/》";

    $first=null;

    $first=addCircle(5);

    showCircle($first);

    echo "《br /》";

    countCircle($first,1,2);

    参考文章 http://blog.sina.com.cn/s/blog_bd418dfa0102vmv1.html

    相关文章

      网友评论

          本文标题:数据结构

          本文链接:https://www.haomeiwen.com/subject/plddgttx.html