Python 链表的追加方法 class\u列表节点: 定义初始(自我、值、下一个): self.\u数据=值 self.\u next=下一个_ 返回 班级名单: 定义初始化(自): 自前=无 自计数=0 返回 定义线性搜索(自、键): 先前=无 电流=自身。\前 索引=0 “当前”不是“无”且键>当前。\u数据: 先前=当前 当前=当前。\ u下一步 指数+=1 如果是当前数据.\u数据!=关键: 先前=无 电流=无 索引=-1 返回上一个、当前、索引 def___;包含_______;(自身,密钥): _,i=self.\u线性搜索(键) 返回i!=-1. def append(自身,值): 如果self.\u front为无: self.\u front=\u ListNode(值,无) 其他: self.\u front.\u next=\u列表节点(值,无) 自身计数+=1 l=列表() lst=[1,2,3,4] i=0 n=长度(lst) 而i

Python 链表的追加方法 class\u列表节点: 定义初始(自我、值、下一个): self.\u数据=值 self.\u next=下一个_ 返回 班级名单: 定义初始化(自): 自前=无 自计数=0 返回 定义线性搜索(自、键): 先前=无 电流=自身。\前 索引=0 “当前”不是“无”且键>当前。\u数据: 先前=当前 当前=当前。\ u下一步 指数+=1 如果是当前数据.\u数据!=关键: 先前=无 电流=无 索引=-1 返回上一个、当前、索引 def___;包含_______;(自身,密钥): _,i=self.\u线性搜索(键) 返回i!=-1. def append(自身,值): 如果self.\u front为无: self.\u front=\u ListNode(值,无) 其他: self.\u front.\u next=\u列表节点(值,无) 自身计数+=1 l=列表() lst=[1,2,3,4] i=0 n=长度(lst) 而i,python,linked-list,Python,Linked List,为了进一步解释,我实现了线性搜索方法和contains方法。contains方法检查数字是否在列表中(返回true或false).现在,当我需要使用contains方法检查列表中的#3时,答案是false!!我不知道问题出在哪里您的追加方法不会沿着列表向下移动。它只是总是追加到self.\u front.\u next如果self.front已经存在。这意味着追加循环末尾的内容是第一个t你附加了什么,你最后附加的东西,中间什么都没有 要更正它,请在列表中查找一个\u next等于None,然后附

为了进一步解释,我实现了线性搜索方法和contains方法。contains方法检查数字是否在列表中(返回true或false).现在,当我需要使用contains方法检查列表中的#3时,答案是false!!我不知道问题出在哪里

您的追加方法不会沿着列表向下移动。它只是总是追加到
self.\u front.\u next
如果
self.front
已经存在。这意味着追加循环末尾的内容是第一个t你附加了什么,你最后附加的东西,中间什么都没有

要更正它,请在列表中查找一个
\u next
等于
None
,然后附加到那里

class _ListNode:

  def __init__(self, value, next_):

      self._data = value
      self._next = next_
      return


 class List:

      def __init__(self):

         self._front = None
         self._count = 0
         return

      def _linear_search(self,key):
           previous = None
           current = self._front
           index = 0

          while current is not None and key > current._data:
               previous = current
               current = current._next
               index += 1
          if current._data != key:
          previous = None
          current = None
          index = -1

         return previous, current, index



     def __contains__(self, key):

          _, _, i = self._linear_search(key)
          return i != -1

      def append(self, value):

           if self._front is None:
              self._front = _ListNode(value,None)
           else:
              self._front._next = _ListNode(value,None)
           self._count += 1

   l = List()
   lst = [1,2,3,4]
   i = 0
   n = len(lst)
   while i < n:
      l.append(lst[i])
      i += 1
   print("{}".format(l.__contains(3))    
您还可以定义一个
\u str\u
方法来打印
列表的内容

e、 g

这不是一个特别有效的实现,因为它构建了一个中间内置的
list
对象


您也不需要在方法中使用那些裸露的
return
语句。您可以删除这些语句。

请给出一个可用于重新创建问题的实例。这没有真正的帮助。请阅读帮助中心中的链接页。人们应该能够从您的问题中复制和粘贴代码,运行它,并看到与您相同的输出描述。您的编辑改进了代码,但仍然缺少打印
列表的方法。运行该代码,
print(l)
只输出类似于
的内容。你的append方法总是只添加到
self.\u front.\u next
你需要找到最后一个节点并添加到该节点。。感谢帮助:Dgreat。如果这是一个有用的答案,你可以接受并向上投票。我看到你编辑了你的问题,请让我知道它是否以任何方式呈现了这个答案g、 当我从列表中删除#3时(例如),然后再追加一次,检查它是否在列表中,答案是false!!好的,这可能是因为你的删除函数或线性搜索函数。如果你在这个问题上卡住了,我建议你问一个新问题。我的删除函数有效,我使用插入方法而不是追加,一切都很好,但是当我使用追加方法时od它可以工作,除非我删除该号码并在另一时间追加它
def append(self, value):

    if self._front is None:
        self._front = _ListNode(value, None)
    else:
        n = self._front
        while n._next is not None:
            n = n._next
        n._next = _ListNode(value, None)

    self._count += 1
def __str__(self):
    res = []
    n = self._front
    while n is not None:
        res.append(str(n._data))
        n = n._next

    return ', '.join(res)