Heim > Artikel > Backend-Entwicklung > So implementieren Sie einfach verknüpfte Listen in PHP
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.
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 '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 ();
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!