2012-01-17 4 views
1

私はリンクリストクラスを作成していて、オブジェクトへの参照についていくつか混乱しています。PHP:オブジェクトへの参照でリンクリストの実装に問題がありますか?

私の理解によれば、デフォルトでオブジェクトは参照としてコピーされています。 $ Obj1 = $ Obj2。 $ Obj1は$ Obj2のエイリアスです。

誰かがリンクリストの実装で正しいことを指摘できますか?

$firstNode->next = $this->first;---> seems to be correct 
      or 
$firstNode->next =& $this->first; 

$this->first = $firstNode;-----> seems to be correct as $firstNode is an object 
      or 
$this->first = & $firstNode; 

コード:PHPで

class Node { 
    public $element; 
    public $next; 

public function __construct($element){ 
    $this->element = $element; 
    $this->next = NULL; 
    } 
} 

class Linklist { 

    private $first; 
    private $listSize; 

public function __construct(){  
    $this->first = NULL; 
    $this->listSize = 0; 
} 

public function InsertToFirst($element){ 
    $firstNode = new Node($element); 
    $firstNode->next = $this->first; // or $firstNode->next =& $this->first; 
    $this->first = $firstNode; // or $this->first = & $firstNode; 
} 
+1

(これが宿題でない場合)なぜPHPでリンクリストを作成しますか? – erenon

答えて

2

あなたは、各ノードは、オブジェクト自体とnextあるとfirstがその対象となっている場合は、あなたのリンクリストの参照割り当て(エイリアシング/ &)を使用する必要はありませんノード型も同様です。

詳しくは、Objects and References in the PHP Manualを参照してください。

+0

あなたは$ this-> first = $ firstNodeを意味します。正しい?オブジェクトの前に&を追加する必要はありませんか? –

+0

@Praveen:仕事をするという意味で正しい。これらのプロパティのgetterメソッドとsetterメソッドを記述し、常に正しい型が割り当てられていることを確認する必要があります。 - 答えにも便利なリンクが追加されました。 – hakre

+0

私はコードを見ましたhttp://www.codediesel.com/php/linked-list-in-php/&を使用してオブジェクトを割り当てるので、私はこのカウンターの質問に尋ねました –

関連する問題