Heim >Backend-Entwicklung >PHP-Tutorial >PHP implementiert die umgekehrte Reihenfolge der verknüpften Liste
Der Inhalt dieses Artikels befasst sich mit der Implementierung der umgekehrten Reihenfolge verknüpfter Listen. Jetzt kann ich ihn mit allen teilen, die ihn benötigen
<?php class Node { public $str; public $next; function __construct ($str) { $this->str = $str; } } //创建链表头 function createList () { $head = new Node(null); return $head; } //向链表$head中插入节点并赋值 function insertNode ($str, &$head) { $node = new Node($str); $node->next = &$head->next; $head->next = &$node; } //取出链表的第一个节点,相当于出队 function outQueue (&$head) { $tmp = $head->next; $head->next = $head->next->next; $tmp->next = null; return $tmp; } //将链表$head进行逆序 function reverse (&$head) { $reversed = createList(null); while (null != $head->next) { insertNode(outQueue($head), $reversed); } return $reversed; } $head = createList(); insertNode('hello', $head); insertNode('world', $head); insertNode('99999999999999', $head); insertNode('888888888888888', $head); insertNode('7777777777777', $head); insertNode('66666666666666', $head); insertNode('55555555555', $head); insertNode('444444444444', $head); insertNode('333333333333', $head); insertNode('222222222222222', $head); insertNode('111111111111', $head); insertNode('000000000000000', $head); print_r($head); $reversed = reverse($head); echo "<hr />"; print_r($reversed); //上面的方法没有在原链表上操作,不过他创建了一个新链表, //虽然逻辑实现显得简单,但是太不专业 //下面贴出更加专业的逆序代码 function reverse2 (&$head) { $q = $head->next->next; $head->next->next = null; while (null != $q) { $p = $q; $q = $p->next; $p->next = $head->next; $head->next = $p; } reverse2($head); echo "<hr />"; print_r($head); } ?>
Ausgabeergebnis:
Verknüpfte Liste vor umgekehrter Reihenfolge:
Node Object ( [str] => [next] => Node Object ( [str] => 000000000000000 [next ] => Node Object ( [str] => 111111111111 [next] => Node Object ( [str] => 222222222222222 [next] => Node Object ( [str] => 333333333333 [next] => Node Object ( [ str] => ] => 444444444444 [next] => Node Object ( [str] => 55555555555 [next] => Node Object ( [str] => 66666666666666 [next] => > 7777777777777 [next] => Node Object ( [str] => 888888888888888 [next] => Node Object ( [str] => 99999999999999 [next] => Node Object ( [str] => world [next ] => Node Object ( [str] => hello [next] => ) ) ) ) ) ) ) ) ) ) )
Umgekehrte verknüpfte Liste:
Node Object ( [ str] => [next] => Node Object ( [str] => hallo [next] => ) [next] => Node Object ( [str] = > Node Object ( [str] => world [next] => ) [next] => Node Object ( [str] => 99999999999999 [next] ] => ; ) [next] => Node Object ( [str] => 888888888888888 [next] => ) [next] => Node Object ( [str] = > Node Object ( [str] => 7777777777777 [next] => ) [next] => Node Object ( [str] => 66666666666666 [next] => ) [next ] => Knotenobjekt ( [str] => Knotenobjekt ( [str] => 55555555555 [next] => ) [next] => Knotenobjekt ( [str] => Knotenobjekt ( [str ] => 444444444444 [next] => ) [next] => Node Object ( [str] => 333333333333 [next] => Knotenobjekt ( [str] => Knotenobjekt ( [str] => 222222222222222 [next] => ) [next] => Knotenobjekt ( [str] => Knotenobjekt ( [str] => 111111111111 [next] => ) [next] => Node Object ( [str] => 000000000000000 [next] => ) [next] => ) ) ) ) ) ) ) ) ) ) ) ) )
Verwandte Empfehlungen:
PHP verwenden, um eine einfach verknüpfte Liste zu implementieren
Anleitung Implementieren Sie es in PHP. Doppelt verknüpfte Liste und Sortierung
Das obige ist der detaillierte Inhalt vonPHP implementiert die umgekehrte Reihenfolge der verknüpften Liste. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!