链接列表数据结构理解

时间:2016-09-02 13:41:58

标签: python class data-structures linked-list

我对链接列表结构中的一件事情有点困难。 基本上,链接列表的节点是使用以下类创建的,下一个引用是通过方法getNext()获得的: 我省略了与我的问题无关的其他方法。

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”的方法。它是如何(getNext()方法)被一个不是NodeClass对象的对象(即当前)使用的?实际上它是“UnorderedList”类的一个对象。

1 个答案:

答案 0 :(得分:1)

current基本上是UnOrderedList的一个实例,其中每个元素都是Node个对象。因此,Nodes上应用的方法可以应用于current的每个元素。使用add方法将节点添加到UnOrderedList

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