Reply to pointer behavior in PHP?

Your name:

Reply:


Posted by davidgregan@gmail.com on 01/22/08 19:04

Hi, I'm fairly new to PHP and I have a question regarding pointers.
Below is an example binary tree implementation I found in the
internet. It works great but I'm not sure how it works. Here's what
I'm confused about, in the insert function the variable $pointer is
set to $this->tree. Now, my current understanding is that after this
the variable $pointer will contain the data from $this-> tree.
However, as the function continues $pointer is set to pointer->left
(or right) until the correct index is found. at this point the value
is added to the tree with $pointer->left=new leaf.

In this case the value of pointer seems to be referencing a position
in the $tree variable instead of merely containing the data of $tree
as I would expect. Furthermore, when $pointer->left is set to a new
leaf, it is actually added to $tree and not just to $pointer. So my
question is, why is this variable behaving like a pointer in this case
instead of just containing the value of tree?

Thanks,
Dave

class leaf
{
public $data;
public $left;
public $right;

public function __construct($d){
$this->data = $d;
}
}
class binary_tree{
public $tree=Null;
public function insert($val) {
if (!(isset($this->tree))) {
$this->tree = new leaf($val);
} else {
$pointer = $this->tree;
for(;;) {
if ($val <= $pointer->data) {
if ($pointer->left) {$pointer = $pointer->left;}
else {$pointer->left = new leaf($val); break;}
} else {
if ($pointer->right) {$pointer = $pointer-
>right;}
else {$pointer->right = new leaf($val); break;}
}
}
}
}

}
$root=new binary_tree;
for($i=0; $i<20; $i++){
$randnum = rand(0,1000);
$root->insert($randnum);
}
print "<pre>";
print_r($root)

[Back to original message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация