PHP單鏈表的實(shí)現(xiàn)代碼

字號(hào):


    這篇文章主要介紹了Yii2 RESTful中api的使用及開(kāi)發(fā)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    單鏈表是一種鏈?zhǔn)酱嫒〉臄?shù)據(jù)結(jié)構(gòu),用一組地址任意的存儲(chǔ)單元存放線性表中的數(shù)據(jù)元素。
    單鏈表簡(jiǎn)介
    鏈表中的數(shù)據(jù)是以結(jié)點(diǎn)來(lái)表示的,每個(gè)結(jié)點(diǎn)的構(gòu)成:元素(數(shù)據(jù)元素的映象) + 指針(指示后繼元素存儲(chǔ)位置),元素就是存儲(chǔ)數(shù)據(jù)的存儲(chǔ)單元,指針就是連接每個(gè)結(jié)點(diǎn)的地址數(shù)據(jù)。
    關(guān)鍵代碼如下所示:
    <?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對(duì)象傳引用,所以Demo::edit沒(méi)有必要
    // unset($node4);
    // $node4 = new Demo(3, '豬悟能');
    // Demo::edit($team, $node4);
    Demo::pop($team, $node1);
    Demo::show($team);
    以上所述是小編給大家介紹的PHP單鏈表的實(shí)現(xiàn)代碼,希望對(duì)大家有所幫助