2012-02-20 30 views
2

こんにちは私はMatlabでリンクリストを実装しようとしています。クラスを再帰的に呼び出す(リンクリストを実装する)

私がやって期待しています実装は、(これはCと同等である)である:

class Node{ 
    public Node* child; 
} 

私は周りを見回しているが、かなり近いものを得るように見えることはありません。

+1

あなたが質問を明確にしたい場合には参考になります少し。 (1)あなたは再帰的メソッドを実装しようとしていますが、あなたが何をしたいのか何をしようとしているのかについて何も言わないのです。 (2)あなたは「これはCの同等物です」と言っていますが、C以外のものに従ってください(そして、それには再帰的な方法も含まれていないようです) –

+1

あなたが実際にやろうとしていることそのクラスのプロパティの値が同じクラスの別のオブジェクトへの参照であるクラスを作成するだけです...あなたは特別なことを何もする必要はありません。 MATLABクラスのプロパティにはタイプが付いていないので、 'x.child = x'などと言っても何も止めません。しかし、おそらく 'class myclass

+0

私の意見ではあまりにも漠然としていることを申し訳ありません。私が見ていたのはOOPによるリンクリスト実装でした。 – shunyo

答えて

6

私はあなたがリンクリストを実装したいと思います:

classdef Node < handle 
     properties 
      Next = Node.empty(0); %Better than [] because it has same type as Node. 
      Data; 
     end   

     methods 
      function this = Node(data) 
       if ~exist('data','var') 
        data = []; 
       end 
       this.Data = data; 
      end 
     end 
    end 

は創造:

n1 = Node('Foo'); %Create one node 
    n2 = Node('Bar'); %Create another one 
    n1.Next = n2; %Link between them 

反復:

n = n1; 
    while ~isempty(n) 
     disp(n.Data); %Change this line as you wish 
     n = n.Next;   
    end 
+0

ありがとう!それは最高です。 – shunyo

関連する問題