中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php如何實現單鏈表

發布時間:2021-02-23 09:48:54 來源:億速云 閱讀:180 作者:清風 欄目:編程語言

本文將為大家詳細介紹“php如何實現單鏈表”,內容步驟清晰詳細,細節處理妥當,而小編每天都會更新不同的知識點,希望這篇“php如何實現單鏈表”能夠給你意想不到的收獲,請大家跟著小編的思路慢慢深入,具體內容如下,一起去收獲新知識吧。

php實現單鏈表的方法:首先寫出鏈表節點的類;然后在鏈表中還定義兩個方法,分別是插入和刪除;接著獲取鏈表長度并添加節點數據;最后獲取節點名字并進行刪除或更新操作即可。

用PHP實現的單鏈表

單鏈表顧名思義就是一個鏈式數據結構,它有一個表頭,并且除了最后一個節點外,所有節點都有其后繼節點。如下圖。

首先,我們寫出鏈表節點的類。單鏈表中的每一個節點,都保存其數據域和后驅指針

//鏈表節點 
class node { 
    public $id; //節點id 
    public $name; //節點名稱 
    public $next; //下一節點 
   
    public function __construct($id, $name) { 
        $this->id = $id; 
        $this->name = $name; 
        $this->next = null; 
    } 
}

鏈表中還有兩個特別重要的方法,插入和刪除。插入需要找到插入的位置,把前一個元素的next指針指向被插入的節點,并將被插入節點的next指針指向后一個節點,如下圖左側所示。而刪除則是把前一個節點的next指針指向后一個節點,并返回被刪除元素的數據內容,如下圖右側所示。

//單鏈表 
class singelLinkList { 
    private $header; //鏈表頭節點 
   
    //構造方法 
    public function __construct($id = null, $name = null) { 
        $this->header = new node ( $id, $name, null ); 
    } 
 
    //獲取鏈表長度 
    public function getLinkLength() { 
        $i = 0; 
        $current = $this->header; 
        while ( $current->next != null ) { 
            $i ++; 
            $current = $current->next; 
        } 
        return $i; 
    } 
 
    //添加節點數據 
    public function addLink($node) { 
        $current = $this->header; 
        while ( $current->next != null ) { 
            if ($current->next->id > $node->id) { 
                break; 
            } 
            $current = $current->next; 
        } 
        $node->next = $current->next; 
        $current->next = $node; 
    } 
 
    //刪除鏈表節點 
    public function delLink($id) { 
        $current = $this->header; 
        $flag = false; 
        while ( $current->next != null ) { 
            if ($current->next->id == $id) { 
                $flag = true; 
                break; 
            } 
            $current = $current->next; 
        } 
        if ($flag) { 
            $current->next = $current->next->next; 
        } else { 
            echo "未找到id=" . $id . "的節點!<br>"; 
        } 
    }
 
    //判斷連表是否為空
    public function isEmpty(){
            return $this->header == null;
    }
 
    //清空鏈表
    public function clear(){
            $this->header = null;
    } 
 
    //獲取鏈表 
    public function getLinkList() { 
        $current = $this->header; 
        if ($current->next == null) { 
            echo ("鏈表為空!"); 
            return; 
        } 
        while ( $current->next != null ) { 
            echo 'id:' . $current->next->id . '   name:' . $current->next->name . "<br>"; 
            if ($current->next->next == null) { 
                break; 
            } 
            $current = $current->next; 
        } 
    } 
 
    //獲取節點名字 
    public function getLinkNameById($id) { 
        $current = $this->header; 
        if ($current->next == null) { 
            echo "鏈表為空!"; 
            return; 
        } 
        while ( $current->next != null ) { 
            if ($current->id == $id) { 
                break; 
            } 
            $current = $current->next; 
        } 
        return $current->name; 
    } 
 
    //更新節點名稱 
    public function updateLink($id, $name) { 
        $current = $this->header; 
        if ($current->next == null) { 
            echo "鏈表為空!"; 
            return; 
        } 
        while ( $current->next != null ) { 
            if ($current->id == $id) { 
                break; 
            } 
            $current = $current->next; 
        } 
        return $current->name = $name; 
    } 
}
$lists = new singelLinkList (); 
$lists->addLink ( new node ( 5, 'eeeeee' ) ); 
$lists->addLink ( new node ( 1, 'aaaaaa' ) ); 
$lists->addLink ( new node ( 6, 'ffffff' ) ); 
$lists->addLink ( new node ( 4, 'dddddd' ) ); 
$lists->addLink ( new node ( 3, 'cccccc' ) ); 
$lists->addLink ( new node ( 2, 'bbbbbb' ) ); 
$lists->getLinkList (); 
echo "<br>-----------刪除節點--------------<br>"; 
$lists->delLink ( 5 ); 
$lists->getLinkList ();
echo "<br>-----------更新節點名稱--------------<br>"; 
$lists->updateLink ( 3, "222222" ); 
$lists->getLinkList ();
echo "<br>-----------獲取節點名稱--------------<br>"; 
echo $lists->getLinkNameById ( 5 );
echo "<br>-----------獲取鏈表長度--------------<br>"; 
echo $lists->getLinkLength ();

如果你能讀到這里,小編希望你對“php如何實現單鏈表”這一關鍵問題有了從實踐層面最深刻的體會,具體使用情況還需要大家自己動手實踐使用過才能領會,如果想閱讀更多相關內容的文章,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

青神县| 昌吉市| 德州市| 江安县| 手游| 贵阳市| 荣成市| 五河县| 离岛区| 新野县| 英吉沙县| 临沂市| 普定县| 游戏| 建阳市| 汝城县| 鹿泉市| 天门市| 炉霍县| 双江| 丰台区| 青浦区| 金堂县| 桑日县| 府谷县| 聂拉木县| 西乡县| 娱乐| 朝阳区| 裕民县| 兰州市| 涿鹿县| 彩票| 合阳县| 郓城县| 冀州市| 灵台县| 资溪县| 宁安市| 广宁县| 中卫市|