Dieser Artikel stellt hauptsächlich die Definition und Umkehrfunktion der PHP-Implementierung verknüpfter Listen vor. Er analysiert die grundlegenden Definitions-, Hinzufügungs-, Entfernungs-, Durchlauf- und zwei Umkehroperationen von PHP-verknüpften Listen in Form von Beispielen Referenz,
Das Beispiel in diesem Artikel beschreibt die Definition und Umkehrfunktion einer verknüpften Liste in PHP. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
PHP-Definition der verknüpften Liste und Operationen wie Hinzufügen, Entfernen, Durchlaufen usw.:
<?php class Node { private $Data;//节点数据 private $Next;//下一节点 public function setData($value){ $this->Data=$value; } public function setNext($value){ $this->Next=$value; } public function getData(){ return $this->Data; } public function getNext(){ return $this->Next; } public function __construct($data,$next){ $this->setData($data); $this->setNext($next); } } class LinkList { private $header;//头节点 private $size;//长度 public function getSize() { $i=0; $node=$this->header; while($node->getNext()!=null) { $i++; $node=$node->getNext(); } return $i; } public function setHeader($value){ $this->header=$value; } public function getHeader(){ return $this->header; } public function __construct(){ header("content-type:text/html; charset=utf-8"); $this->setHeader(new Node(null,null)); } /** *@author MzXy *@param $data--要添加节点的数据 * */ public function add($data) { $node=$this->header; while($node->getNext()!=null) { $node=$node->getNext(); } $node->setNext(new Node($data,null)); } /** *@author MzXy *@param $data--要移除节点的数据 * */ public function removeAt($data) { $node=$this->header; while($node->getData()!=$data) { $node=$node->getNext(); } $node->setNext($node->getNext()); $node->setData($node->getNext()->getData()); } /** *@author MzXy *@param 遍历 * */ public function get() { $node=$this->header; if($node->getNext()==null){ print("数据集为空!"); return; } while($node->getNext()!=null) { print('['.$node->getNext()->getData().'] -> '); if($node->getNext()->getNext()==null){break;} $node=$node->getNext(); } } /** *@author MzXy *@param $data--要访问的节点的数据 * @param 此方法只是演示不具有实际意义 * */ public function getAt($data) { $node=$this->header->getNext(); if($node->getNext()==null){ print("数据集为空!"); return; } while($node->getData()!=$data) { if($node->getNext()==null){break;} $node=$node->getNext(); } return $node->getData(); } /** *@author MzXy *@param $value--需要更新的节点的原数据 --$initial---更新后的数据 * */ public function update($initial,$value) { $node=$this->header->getNext(); if($node->getNext()==null){ print("数据集为空!"); return; } while($node->getData()!=$data) { if($node->getNext()==null){break;} $node=$node->getNext(); } $node->setData($initial); } } $lists = new LinkList(); $lists -> add(1); $lists -> add(2); $lists -> get(); echo '<pre class="brush:php;toolbar:false">'; print_r($lists); echo ''; ?>
Umgekehrt verlinkt Listenoperation:
1. Häufig verwendete Methoden: Links und rechts abwechseln, den nächsten Knoten speichern und den vorherigen Knoten durch den nächsten Knoten ersetzen. Ersatz durchführen.
Code:
function ReverseList($pHead) { // write code here if($pHead == null || $pHead->next == null){ return $pHead; } $p = $pHead; $q = $pHead->next; $pHead->next = null;//$pHead 变为尾指针 while($q){ $r = $q->next; $q->next = $p; $p = $q; $q = $r; } return $p; }
2. Rekursive Methode verwenden. Drei Knoten: der Kopfknoten, der erste Knoten und der zweite Knoten. Behandeln Sie alle Knoten nach dem ersten Knoten und führen Sie eine Schleife nacheinander durch. $pHead != null || $pHead->next != null
function ReverseList($pHead) { // write code here if($pHead == null || $pHead->next == null){ return $pHead; } $res = ReverseList($pHead->next); $pHead->next->next = $pHead; $pHead->next = null; return $res;
Verwandte Empfehlungen:
Über verknüpfte Listenoperationen in PHPDas obige ist der detaillierte Inhalt vonDarüber, wie PHP die Definitions- und Umkehrfunktion verknüpfter Listen implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!