簡體   English   中英

"類 LinkedList 的 __str__ 方法"

[英]__str__ method for Class LinkedList

我在下面定義了LinkedList類。 我能夠實現除__str__方法之外的所有其他方法,有人可以告訴我如何定義此方法。 Node類已經定義好了,我可以使用Node()get_data()set_data()get_next()set_next()

class LinkedList:
    def __init__(self):
        self.head = None
        self.count = 0

    def is_empty(self):
        return self.count == 0

    def size(self):
        return self.count

    def add(self, item):
        new_node = Node(item)
        new_node.set_next(self.head)
        self.head = new_node
        self.count += 1

    def search(self, item):
        current = self.head 
        while current != None:
            if current.get_data() == item:
                return True
            else:
                current = current.get_next()
        return False

    def remove(self, item):
        found = False
        current = self.head
        previous = None
        while current != None and not found:
            if current.get_data() == item:
                found = True
            else:
                previous = current
                current = current.get_next()
        if found:
            if previous == None:
                self.head = current.get_next()
            else:
                previous.set_next(current.get_next())
            self.count -= 1
        else:
            raise ValueError("remove(" + str(item) + "). " + str(item) + " is not in list")
            
    def clear(self):
        while (self.head != None):
            temp = self.head
            self.head = self.head.next
            temp = None    
            
    def __str__(self): #My doubt is here
        current = self.head
        return "Head --> {}".format(current)
        current = current.get_next()

測試:

l_list = LinkedList()
print(l_list)
l_list.add(1)
l_list.add(2)
print(l_list)

預期輸出:

Head --> None
Head --> 2 --> 1

收到的輸出:

Head --> None
Head --> <__main__.Node object at 0x7f39f7d14b80>

測試:

l_list = LinkedList()
l_list.add("hello")
l_list.add("world")
print(l_list)
l_list.clear()
print(l_list)

預期輸出:

Head --> world --> hello
Head --> None

輸出記錄:

Head --> <__main__.Node object at 0x7f39f7d7cf10>
Head --> None

在這里打印節點的對象,為了修復,只需為每個節點調用 get_data 方法,並獲取下一個節點:

def __str__(self): #My doubt is here
    current = self.head
    s = "Head -->"
    while current:
        s+=" {} -->".format(current.get_data())
        current = current.get_next()
    s += " None"
    return s

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM