이 글의 내용은 PHP에서 역방향 연결 리스트(코드 예제)를 구현하는 방법에 대한 내용입니다. 필요한 친구들이 참고할 수 있기를 바랍니다.
1. 일반적인 방법은 반복과 재귀로 구분됩니다. 반복은 처음부터 끝까지, 재귀는 끝에서 시작까지입니다.
2. 두 개의 포인터(old와 new)를 설정하고, 각 항목은 new 뒤에 추가됩니다. 새로운 연결 리스트는 new를 가리킨다. 연결 리스트 헤더
3. old->next는 new를 직접 가리킬 수 없지만 임시 포인터 tmp는 old->next가 가리키는 주소 공간을 가리키도록 설정해야 합니다. 원래 연결 목록 데이터, 그리고 old->next는 new를 가리킵니다. New는 old, new=old로 이동하고 마지막으로 old=tmp로 이동하여 데이터를 검색합니다
while(old!=null){ tmp=old->next old->next=new new=old old=tmp }
<?php class Node{ public $data; public $next; } //头插法创建一个链表 $linkList=new Node(); $linkList->next=null;//头结点 for($i=1;$i<=10;$i++){ $node=new Node(); $node->data="aaa{$i}";//创建新结点$node $node->next=$linkList->next;//$node->next指向头结点->next $linkList->next=$node;//头结点->next指向$node } var_dump($linkList); function ReverseList($pHead){ $old=$pHead->next;//跳过头结点 $new=null; $tmp=null; //反转过程 while($old!=null){ $tmp=$old->next; $old->next=$new; $new=$old; $old=$tmp; } //给新链表加个头结点 $newHead=new Node(); $newHead->next=$new; var_dump($newHead); } ReverseList($linkList);
object(Node)#1 (2) { ["data"]=> NULL ["next"]=> object(Node)#11 (2) { ["data"]=> string(5) "aaa10" ["next"]=> object(Node)#10 (2) { ["data"]=> string(4) "aaa9" ["next"]=> object(Node)#9 (2) { ["data"]=> string(4) "aaa8" ["next"]=> object(Node)#8 (2) { ["data"]=> string(4) "aaa7" ["next"]=> object(Node)#7 (2) { ["data"]=> string(4) "aaa6" ["next"]=> object(Node)#6 (2) { ["data"]=> string(4) "aaa5" ["next"]=> object(Node)#5 (2) { ["data"]=> string(4) "aaa4" ["next"]=> object(Node)#4 (2) { ["data"]=> string(4) "aaa3" ["next"]=> object(Node)#3 (2) { ["data"]=> string(4) "aaa2" ["next"]=> object(Node)#2 (2) { ["data"]=> string(4) "aaa1" ["next"]=> NULL } } } } } } } } } } } object(Node)#12 (2) { ["data"]=> NULL ["next"]=> object(Node)#2 (2) { ["data"]=> string(4) "aaa1" ["next"]=> object(Node)#3 (2) { ["data"]=> string(4) "aaa2" ["next"]=> object(Node)#4 (2) { ["data"]=> string(4) "aaa3" ["next"]=> object(Node)#5 (2) { ["data"]=> string(4) "aaa4" ["next"]=> object(Node)#6 (2) { ["data"]=> string(4) "aaa5" ["next"]=> object(Node)#7 (2) { ["data"]=> string(4) "aaa6" ["next"]=> object(Node)#8 (2) { ["data"]=> string(4) "aaa7" ["next"]=> object(Node)#9 (2) { ["data"]=> string(4) "aaa8" ["next"]=> object(Node)#10 (2) { ["data"]=> string(4) "aaa9" ["next"]=> object(Node)#11 (2) { ["data"]=> string(5) "aaa10" ["next"]=> NULL } } } } } } } } } } }
관련 권장 사항:
PHP가 구현하는 방법에 대해 연결된 목록의 정의와 반전 기능
단일 연결 목록을 구현하는 PHP의 예 Code_PHP Tutorial
위 내용은 PHP에서 연결리스트를 역방향으로 바꾸는 방법(코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!