php实现单链表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php实现单链表相关的知识,希望对你有一定的参考价值。

<?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);

 

以上是关于php实现单链表的主要内容,如果未能解决你的问题,请参考以下文章

php与go实现单链表对比

大话数据结构之php实现单链表

php实现单链表

php实现一个单链表

数据结构与算法之PHP实现链表类(单链表/双链表/循环链表)

单链表~增删查改(附代码)~简单实现