• 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)

  • 相关阅读:
    Oracle.ManagedDataAccess.dll 连接Oracle数据库不需要安装客户端
    Oracle.DataAccess.Client.OracleCommand”的类型初始值设定项引发异常
    SQLAchemy
    MySQL 索引详解大全
    不用任何图片,只用简单的css写出唯美的钟表,就问你行吗?
    Ajax详解
    Mysql自定义函数
    MySQL目录
    Mysql函数集合
    MySQL之扩展(触发器,存储过程等)
  • 原文地址:https://www.cnblogs.com/xzjs/p/4118294.html
Copyright © 2020-2023  润新知