Home > Article > Backend Development > PHP implements reverse order of linked list
The content of this article is about the implementation of linked list reverse order in PHP, which has certain reference value. Now I share it with everyone. Friends in need can refer to it
<?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); } ?>
Output result:
Linked list before reverse order:
Node Object ( [str] => [next] => Node Object ( [str] => 000000000000000 [next] => Node Object ( [str] ] => 111111111111 [next] => Node Object ( [str] => 222222222222222 [next] => Node Object ( [str] => 333333333333 [next] => > 444444444444 [next] => Node Object ( [str] => 55555555555 [next] => Node Object ( [str] => 66666666666666 [next] => Node Object ( [str] => 7777777777777 [next] => Node Object ( [str] => 888888888888888 [next] => Node Object ( [str] => 99999999999999 [next] => next] => Node Object ( [str] => hello [next] => ) ) ) ) ) ) ) ) ) ) ) ) ) )
The linked list after reverse order:
Node Object ( [str] => [next] => Node Object ( [str] => Node Object ( [str] => hello [next] => ) [next] => Node Object ( [str ] => Node Object ( [str] => world [next] => ) [next] => Node Object ( [str] => Node Object ( [str] => 99999999999999 [next] = > ) [next] => Node Object ( [str] => Node Object ( [str] => 888888888888888 [next] => ) [next] => Node Object ( [str] => Node Object ( [str] => 7777777777777 [next] => ) [next] => Node Object ( [str] => Node Object ( [str] => 66666666666666 [next] => ) [ next] => Node Object ( [str] => Node Object ( [str] => 55555555555 [next] => ) [next] => Node Object ( [str] => Node Object ( [ str] => 444444444444 [next] => ) [next] => Node Object ( [str] => Node Object ( [str] => 3333333333333 [next] => ) [next] => ; Node Object ( [str] => Node Object ( [str] => 222222222222222 [next] => ) [next] => Node Object ( [str] => Node Object ( [str] => ; 111111111111 [next] => ) [next] => Node Object ( [str] => Node Object ( [str] => 000000000000000 [next] => ) [next] => ) ) ) ) ) ) ) ) ) ) ) ) )
Related recommendations:
Use PHP to implement a singly linked list
How to implement a doubly linked list in PHP And sort
The above is the detailed content of PHP implements reverse order of linked list. For more information, please follow other related articles on the PHP Chinese website!