php实现单链表

2018-06-22 04:53:01来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

<?php
/**
  * 单链表
  */ 
class Demo
{
    private $id;
    public $name;
    public $next;

    public function __construct ($id = '', $name = '')
    {
        $this->id = $id;
        $this->name = $name;
    }

    static public function show ($head)
    {
        $cur = $head;
        while ($cur->next) {
            echo $cur->next->id,'###',$cur->next->name,'<br />';
            $cur = $cur->next;
        }
        echo '<hr />';
    }

    //尾插法
    static public function push ($head, $node)
    {
        $cur = $head;
        while (NULL != $cur->next) {
            $cur = $cur->next;
        }
        $cur->next  = $node;
        return $head;
    }

    static public function insert($head, $node)
    {
        $cur = $head;
        while (NULL != $cur->next) {
            if ($cur->next->id > $node->id) {
                break;
            }
            $cur = $cur->next;
        }
        $node->next = $cur->next;
        $cur->next  = $node;
        return $head;
    }

    static public function edit($head, $node)
    {
        $cur = $head;
        while (NULL != $cur->next) {
            if ($cur->next->id == $node->id) {
                break;
            }
            $cur = $cur->next;
        }
        $cur->next->name = $node->name;
        return $head;        
    }

    static public function pop ($head, $node)
    {
        $cur = $head;
        while (NULL != $cur->next) {
            if ($cur->next == $node) {
                break;
            }
            $cur = $cur->next;
        }
        $cur->next = $node->next;
        return $head;            
    }
}

$team = new Demo();
$node1 = new Demo(1, '唐三藏');
Demo::push($team, $node1);
$node1->name = '唐僧';
Demo::show($team);

// Demo::show($team);
$node2 = new Demo(2, '孙悟空');
Demo::insert($team, $node2);
// Demo::show($team);
$node3 = new Demo(5, '白龙马');
Demo::push($team, $node3);
// Demo::show($team);
$node4 = new Demo(3, '猪八戒');
Demo::insert($team, $node4);
// Demo::show($team);
$node5 = new Demo(4, '沙和尚');
Demo::insert($team, $node5);
// Demo::show($team);
$node4->name = '猪悟能';//php对象传引用,所以Demo::edit没有必要
// unset($node4);
// $node4 = new Demo(3, '猪悟能');
// Demo::edit($team, $node4);
Demo::pop($team, $node1);

Demo::show($team);

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:利用云视频实现在线教育和美女主播系统。

下一篇:sprintf函数php的详细使用方法