首页 > 代码库 > php执行的困惑
php执行的困惑
最近在用php语言实现各种数据结构算法排序,可以说是很蛋疼的一件事,最近遇到了一个问题,不知道是什么原因,姑且放到这里,希望能看到的人予以帮助
首先我用php写了这样一个类
class ListNode { private $val; private $next=null; function __construct($val) { $this->val=$val; } public function __get($propertyName){ return $this->$propertyName; } public function __set($name,$value){ $this->$name=$value; } }
然后是一个算法
1 function partitionLinkedList($head,$x){ 2 var_dump($head); 3 $dummy=new ListNode(0); 4 $pivot=new ListNode($x); 5 $first=$dummy; 6 $second=$pivot; 7 $curr=$head->next; 8 9 while ($curr!=null) {10 // var_dump($curr);11 $next=$curr->next;12 echo $curr->val;13 if($curr->val<$x){14 $first->next=clone $curr;15 $first=$curr;16 $first->next=null;17 }else{18 $second->next=clone $curr;19 $second=$curr;20 $new2=new ListNode(100);21 // $second->next=null;22 $second->next=$new2;23 }24 echo "dummy";25 var_dump($dummy);26 echo "pivot";27 var_dump($pivot);28 $curr=$next;29 }30 $first->next=$pivot->next;31 return $dummy;32 }33 34 $arr=array(4,3,2,1,2,5);35 $L=new ListNode(0);36 $L1=$L;37 foreach ($arr as $nodeval) {38 // echo $nodeval." ";39 $new = new ListNode($nodeval);40 // echo $new->val.‘ ‘;41 $L1->next=$new;42 $L1=$new;43 // echo $L1->val;44 // echo "<br/>";45 }
问题就出在第16行和第21行,下面是执行的截图
如图所示,当我将链表的next设置为null时,第一遍循环并没有将后续next变为null,却在第二遍循环以后将后续next变为null,不理解是为什么,所以发到这儿希望大家帮助,详细代码可以到我的github上下载(https://github.com/xzjs/interview_php/blob/master/t31.php)
php执行的困惑
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。