遍历链表python

问题描述 投票:0回答:1

看一下这个示例代码:

class Dog:
    def __init__(self,breed,name):
        self.breed = breed
        self.name = name
    
    def bark(self):
        print("my name is {}".format(self.name))

class Cat:
    def __init__(self,age):
        self.age = age
    
    def meow(self):
        print("my name is {}".format(self.name))

myDog = Dog("daschund","bingo")
myCat = Cat(78)
myCat.meow()

注意:Cat 类不是从 Dog 类继承的。所以当你尝试运行这段代码时;它会抛出属性错误,因为“Cat”没有名为“name”的属性。

现在看一下这段遍历链表的代码


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

class LinkedList():
    def __init__(self):
        self.head = None
    def print_linkedlist(self):
        if self.head == None:
            print("Linked list is empty!")
        else:
            n = self.head
            while n != None:
                print(n.data)
                n = n.next

就像最初的例子一样;这里 LinkedList 没有名为 data 或 next 的属性;因为它不是继承自 Node 类。那么 LinkedList 类中的 print_linkedlist() 方法如何访问 Node 类包含的数据和引用/指针呢?

python linked-list
1个回答
0
投票

TL;DR:该方法访问存储在

data
中的对象的方法
next
self.head
,该对象应该是Node类型。

print_linkedlist()
正在访问属于访问LinkedList的
data
属性时返回的对象的
next
head
属性。我假设这个
LinkedList
对象将有一个
Node
对象设置为其
head
。每个
Node
将指向下一个
Node
,而
LinkedList
对象只是保留每个列表的第一个
Node
引用的方法。

© www.soinside.com 2019 - 2024. All rights reserved.