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
为了进一步解释,我实现了线性搜索方法和contains方法。contains方法检查数字是否在列表中(返回true或false).现在,当我需要使用contains方法检查列表中的#3时,答案是false!!我不知道问题出在哪里您的追加方法不会沿着列表向下移动。它只是总是追加到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,然后附
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)