php实现反转链表(链表题一定记得画图)(指向链表节点的指针本质就是一个记录地址的变量)($p->next表示的是取p节点的next域里面的数值,next只是p的一个属性)
php实现反转链表(链表题一定记得画图)(指向链表节点的指针本质就是一个记录地址的变量)($p->next表示的是取p节点的next域里面的数值,next只是p的一个属性)
一、总结
链表反转两种实现方式:a、头插法(遍历一遍链表即可实现链表反转) b、借助数组反转(遍历一遍链表将数值存在数组,反转数组,将数组里面的值尾插法插入链表,返回链表)
链表题一定记得画图
指向链表节点的指针本质就是一个记录地址的变量($p=链表,$p里面记录的就是一个地址),节点的next域里面记录的是下一个变量的地址
$p->next表示的是取p节点的next域里面的数值,next只是p的一个属性
二、php实现反转链表
题目描述:
输入一个链表,反转链表后,输出链表的所有元素。
代码:
代码一
1 <?php 2 /*class ListNode{ 3 var $val; 4 var $next = NULL; 5 function __construct($x){ 6 $this->val = $x; 7 } 8 }*/ 9 /* 10 思路: 11 12 pHead始终指向要反转的结点 13 last 指向反转后的首结点 14 每反转一个结点,把pHead结点的下一个结点指向last, last指向pHead成为反转后首结点, 15 再把pHead向前移动一个结点直至None结束 */ 16 function ReverseList($pHead) 17 { 18 if($pHead == null){ //1、这里多了一个判断 19 return null; 20 } 21 $pre = null; //2、pre是一个非常普通的变量,而不是节点变量,里面记录的是节点的地址,也算是节点变量 22 while($pHead != null){ //3、算法思路是把前面节点的地址拿到,放到下一个节点的next域中 23 $tmp = $pHead->next; 24 $pHead->next = $pre; 25 $pre = $pHead; 26 $pHead = $tmp; 27 } 28 return $pre; 29 30 }
代码二(也是ac)
1 <?php 2 /*class ListNode{ 3 var $val; 4 var $next = NULL; 5 function __construct($x){ 6 $this->val = $x; 7 } 8 }*/ 9 //算法考点:链表的头插法和尾插法,头插法即可实现链表反转 10 //链表反转也可以借助数组反转来实现 11 function ReverseList($pHead) 12 { 13 $head = null; 14 //$end = null; //1、这两句话可有可无 15 //$head->next=$end; 16 while($pHead){ 17 //$p=$pHead; //2、不能这样赋值 18 $p = new ListNode($pHead->val); 19 $p->next=$head->next; 20 $head->next=$p; //4、$head哪来的next域,无语了 21 $pHead=$pHead->next; 22 } 23 return $head->next; //3、输出的时候发现多了一个0,所以用$head->next消除前面的那个0 5、前面多的那个0是head的0,php把它当成了一个node节点变量 24 }
代码三:深入理解链表后的AC
算法思路:就是将前面节点的地址放到后面节点的next域中实现链表反转
<?php /*class ListNode{ var $val; var $next = NULL; function __construct($x){ $this->val = $x; } }*/ //算法考点:链表的头插法和尾插法,头插法即可实现链表反转 //链表反转也可以借助数组反转来实现 function ReverseList($pHead) { $pre=null; while($pHead){ $tmp=$pHead->next; // $pHead->next=$pre; //1、将$pre变量里面记录的地址给$pHead的next域 $pre = $pHead; //2、将$pHead的值(一个地址)给$pre变量 $pHead=$tmp; } return $pre; }
版权申明:欢迎转载,但请注明出处
一些博文中有一些参考内容因时间久远找不到来源了没有注明,如果侵权请联系我删除。
在校每年国奖、专业第一,加拿大留学,先后工作于华东师范大学和香港教育大学。
2024-09-05:27岁,宅加太忙,特此在网上找女朋友,vx:fan404006308
AI交流资料群:753014672