Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie einfach verknüpfte Listen in PHP

So implementieren Sie einfach verknüpfte Listen in PHP

藏色散人
藏色散人Original
2021-02-23 09:30:091528Durchsuche

So implementieren Sie eine einfach verknüpfte Liste in PHP: Schreiben Sie zuerst die Klasse des verknüpften Listenknotens, definieren Sie dann zwei Methoden in der verknüpften Liste, nämlich Einfügen und Löschen, und fügen Sie schließlich Knotendaten hinzu Holen Sie sich den Knotennamen und löschen Sie ihn oder löschen Sie ihn. Aktualisieren Sie ihn einfach.

So implementieren Sie einfach verknüpfte Listen in PHP

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP7.1, Dell G3-Computer.

Einfach verknüpfte Liste in PHP implementiert

Einfach verknüpfte Liste ist, wie der Name schon sagt, eine verknüpfte Datenstruktur. Sie verfügt über einen Header, und mit Ausnahme des letzten Knotens haben alle Knoten ihre Nachfolgerknoten. Wie unten gezeigt.

Zuerst schreiben wir die Klasse des verknüpften Listenknotens. Jeder Knoten in der einfach verknüpften Liste speichert sein Datenfeld und seinen Back-Drive-Zeiger

//链表节点 
class node { 
    public $id; //节点id 
    public $name; //节点名称 
    public $next; //下一节点 
   
    public function __construct($id, $name) { 
        $this->id = $id; 
        $this->name = $name; 
        $this->next = null; 
    } 
}

Es gibt zwei besonders wichtige Methoden in der verknüpften Liste: Einfügen und Löschen. Das Einfügen erfordert das Finden der Einfügeposition, das Zeigen des nächsten Zeigers des vorherigen Elements auf den eingefügten Knoten und das Zeigen des nächsten Zeigers des eingefügten Knotens auf den nächsten Knoten, wie auf der linken Seite der folgenden Abbildung dargestellt. Das Löschen zeigt den nächsten Zeiger des vorherigen Knotens auf den nächsten Knoten und gibt den Dateninhalt des gelöschten Elements zurück, wie auf der rechten Seite der folgenden Abbildung dargestellt.

Empfohlen: „PHP-Video-Tutorial

//单链表 
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 &#39;id:&#39; . $current->next->id . &#39;   name:&#39; . $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, &#39;eeeeee&#39; ) ); 
$lists->addLink ( new node ( 1, &#39;aaaaaa&#39; ) ); 
$lists->addLink ( new node ( 6, &#39;ffffff&#39; ) ); 
$lists->addLink ( new node ( 4, &#39;dddddd&#39; ) ); 
$lists->addLink ( new node ( 3, &#39;cccccc&#39; ) ); 
$lists->addLink ( new node ( 2, &#39;bbbbbb&#39; ) ); 
$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 ();

Das obige ist der detaillierte Inhalt vonSo implementieren Sie einfach verknüpfte Listen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn