python - 为什么我的 linked list 尺寸 function 没有按预期工作?

我使用以下代码来定义我的 linked list、nodes 和一些 functions。

class node:
      def __init__(self,node_data):
        self.__data=node_data
        self.__next=None
  
  def get_data(self):
    return self.__data
  
  def set_data(self,node_data):
    self.__data=node_data
  
  data=property(get_data,set_data)

  def get_next(self):
    return self.__next
  
  def set_next(self,node_next):
    self.__next=node_next

  next=property(get_next,set_next)

  def __str__(self):
    return str(self.__data)

class unordered_list:
  def __init__(self):
    self.head=None
  
  def is_empty(self):
    return self.head==None

  def add(self,item):
    temp=node(item)
    temp.set_next=(self.head)
    self.head=temp

  def size(self):
    current=self.head
    count=0
    while current is not None:
      count=count+1
      current=current.next
    
    return count

  def search(self,item):
    
    current=self.head
    while current is not None:
      if current.data==item:
        return True
      current=current.next
    
    return False

我使用以下代码设置测试列表:

my_list=unordered_list()
my_list.add(31)
my_list.add(77)
my_list.add(17)
my_list.add(93)
my_list.add(26)
my_list.add(54)

但是,当我运行以下命令时,我没有得到正确的输出:-

my_list.size()

输出:

1

预期输出:-

6

有人可以告诉我我的错误可能在哪里吗?

回答1

您需要调用 set_next,而不是为其分配任何内容。所以尝试更换

temp.set_next=self.head

temp.set_next(self.head)

在您对 add 的定义中。

相似文章

随机推荐

最新文章