2017-03-13 11 views
-5

currに渡されるデータがHeadからどのように取得されているかわかりません。誰かが明確な説明C#リンクされたリストは追加メソッドを理解できません

class LinkedListService 
{ 
    private Service Head; 
    public LinkedListService() 
    { 
     Head = null; 
    } 
    public void add(Service data) 
    { 
     Service curr = Head; 
     if (Head == null) 
     { 
      Head = data; 
     } 
     else 
     { 
      while (curr.Next != null) 
      { 
       curr = curr.Next; 
      } 
      curr.Next = data; // how does Head receive the data that is passed to curr ? 
     } 
    } 
} 
+0

「サービス」クラスの実装をどのように推測する必要がありますか? –

+0

あなたの質問は何ですか?ここで尋ねたことは、コードに完全に関連していません。完全なコードを表示する –

答えて

0
curr.Next = data; // how does Head receive the data that is passed to curr ? 

を与えた場合、それにはない素晴らしいことです。最初の行ではcurrはオブジェクトHeadの方に向けられています。

Service curr = Head; // curr --> Head 

Headを意味し、まだ初期化されていない場合:if (Head == null)それはdataは、このラインに存在し、メモリ内の同じアドレスにデータやポイントHeadがかかります。

Head = data; 

場合は他に新しいデータよりもすでに存在するHeadを手にして、テールの最後に行かなければならない。尾の最後の項目は何の次の項目を持っていません

Head | Head.Next --> item2 | item2.Next --> item3 | item3.Next --> null 

:尾はNextプロパティを通じてアクセス可能な一連の要素として表されます。したがって、値はnullになります。それはNext項目にそれを持っていない最後の要素に達したWHE

while (curr.Next != null) 
{ 
    curr = curr.Next; 
} 

:whileループは限りがNext要素存在し、各ステップでcurr ENT素子にNext要素を割り当てるように全体の尾を通りますNext財産を取り、dataが位置するメモリアドレスに向けて、それを指すようになります:

curr.Next = data; 

んが、あなたが最後にリストに1つのより多くの項目がありません。そして、この新しい項目には、nullを示すNextプロパティがあります。

希望します。私のコメントを落とさない場合。

関連する問題