2016-09-02 10 views
2

私はリンクされたリストの構造の1つのことを理解するのが少し難しいです。 基本的に、リンクされたリストのノードは、次のクラスを使用して作成され、次の参照はgetNext()メソッドによって取得されます。 私の問題に関連しない他のメソッドは省略しました。 LinkedListの作成とLinkedListのサイズを見つけるためにしようとしたときリンクされたリストのデータ構造の理解

class Node: 
    def __init__(self,initdata): 
     self.data = initdata 
     self.next = None 

    def getNext(self): 
     return self.next 

今:

class UnorderedList: 
    def __init__(self): 
     self.head = None 

    def size(self): 
     current = self.head 
     count = 0 
     while current != None: 
      count = count + 1 
      current = current.getNext() <----- 

     return count 

私は矢印で示したラインを理解していません。私はそれが次のノードに移動しようとするロジックを知っていますが、getNext()は "NodeClass"のメソッドです。 NodeClassオブジェクトではないオブジェクト(つまり現在のオブジェクト)がどのように使用していますか(getNext()メソッド)実際には "UnorderedList"クラスのオブジェクトです。

+0

このコードはどこですか? –

+1

'current'は' Node'インスタンスではないと思いますか? 'current = self.head'は、' self.head'が何であっても 'current'を設定します。 'self.head'が' Node'インスタンスの場合、 'current' –

+0

もそうですが、self.headがNodeインスタンスである方法は? UnorderedListクラスオブジェクトを初期化するために使用されます。 –

答えて

1

currentは、基本的に、各要素がNodeオブジェクトであるUnOrderedListのインスタンスです。したがって、Nodesに適用されるメソッドは、currentの各要素に適用できます。ノードは、addメソッドを使用してUnOrderedListに追加されます。

def add(self,item): 
    temp = Node(item) 
    temp.setNext(self.head) 
    self.head = temp 
+0

あなたの説明をありがとう、私の問題は 'current'は' getNext() 'メソッドを呼び出すことができるノードでなければならないということです。私は 'current'値から' node'を作成するためにどこかでそれを見逃してしまったと信じています –

+0

ここに 'current = self.head'を割り当てます。現在のオブジェクトはノード –

+0

になります。しかし、' node'オブジェクトは2つの部分: 'self.data'と' self.next'! –

関連する問題