php小教程之實(shí)現(xiàn)鏈表

字號(hào):


    看了很久數(shù)據(jù)結(jié)構(gòu)但是沒有怎么用過,在網(wǎng)上看到了關(guān)于php的數(shù)據(jù)結(jié)構(gòu),學(xué)習(xí)了一下,與大家一起分享一下。
    代碼如下:
    class hero
    {
    public $no;//排名
    public $name;//名字
    public $next=null;//$next是一個(gè)引用,指向另外一個(gè)hero的對(duì)象實(shí)例
    public function __construct($no='',$name='')
    {
    $this->no=$no;
    $this->name=$name;
    }
    static public function showlist($head)
    {
    $cur = $head;
    while($cur->next!=null)
    {
    echo 排名:.$cur->next->no.,名字:.$cur->next->name.<br>;
    $cur = $cur->next;
    }
    }
    //普通插入
    static public function addhero($head,$hero)
    {
    $cur = $head;
    while($cur->next!=null)
    {
    $cur = $cur->next;
    }
    $cur->next=$hero;
    }
    //有序的鏈表的插入
    static public function addherosorted($head,$hero)
    {
    $cur = $head;
    $addno = $hero->no;
    while($cur->next->no <= $addno)
    {
    $cur = $cur->next;
    }
    /*$tep = new hero();
    $tep = $cur->next;
    $cur->next = $hero;
    $hero->next =$tep;*/
    $hero->next=$cur->next;
    $cur->next=$hero;
    }
    static public function deletehero($head,$no)
    {
    $cur = $head;
    while($cur->next->no != $no && $cur->next!= null)
    {
    $cur = $cur->next;
    }
    if($cur->next->no != null)
    {
    $cur->next = $cur->next->next;
    echo 刪除成功<br>;
    }
    else
    {
    echo 沒有找到<br>;
    }
    }
    static public function updatehero($head,$hero)
    {
    $cur = $head;
    while($cur->next->no != $hero->no && $cur->next!= null)
    {
    $cur = $cur->next;
    }
    if($cur->next->no != null)
    {
    $hero->next = $cur->next->next;
    $cur->next = $hero;
    echo 更改成功<br>;
    }
    else
    {
    echo 沒有找到<br>;
    }
    }
    }
    //創(chuàng)建head頭
    $head = new hero();
    //第一個(gè)
    $hero = new hero(1,'111');
    //連接
    $head->next = $hero;
    //第二個(gè)
    $hero2 = new hero(3,'333');
    //連接
    hero::addhero($head,$hero2);
    $hero3 = new hero(2,'222');
    hero::addherosorted($head,$hero3);
    //顯示
    hero::showlist($head);
    //刪除
    hero::deletehero($head,4);
    //顯示
    hero::showlist($head);
    //更改
    $hero4=new hero(2,'xxx');
    hero::updatehero($head,$hero4);
    //顯示
    hero::showlist($head);
    有序的插入的話需要遍歷一遍鏈表,鏈表的一些知識(shí)就不介紹了哈。這里主要分享一下代碼。