zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    Codeforces Round #706 (Div. 2)
    Caddi Programming Contest 2021(AtCoder Beginner Contest 193)
    [ARC116] Deque Game
    Codeforces Round #721 (Div. 2)
    Codeforces Round #618 (Div. 1)
    Educational Codeforces Round 109 (Rated for Div. 2)
    [ABC201F] Insertion Sort
    AtCoder Regular Contest 119
    Codeforces Global Round 13
    Codeforces Round #673 (Div. 1)
  • 原文地址:https://www.cnblogs.com/xzjs/p/4118294.html
Copyright © 2011-2022 走看看