gpt4 book ai didi

python - 如何检查项目是否在链接列表中?

转载 作者:太空宇宙 更新时间:2023-11-04 04:59:14 25 4
gpt4 key购买 nike

基本上,我想检查一个项目是否在链表中。该函数被描述为 __contains__,如果我在 myList 中键入 3,它将返回 TrueFalse,具体取决于链表中是否存在整数3。

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

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

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

def __str__(self):
current = self.head
ans = str(current)
for _ in range(len(self)):
current = current.next
ans += '\n'
ans += str(current)
return ans

def _get_node(self,index):
if 0<= index< len(self):
current = self.head
while index>0:
current = current.next
index -=1
return current

def __contains__(self,item): #need some help here
if self.isEmpty():
raise StopIteration("List is empty")
if self.head == item:
return True
nextItem = self.head.next

def insert(self,index,item):
if index < 0 or index > len(self):
raise IndexError("Index is out of range")
else:
newNode = Node(item)
if index == 0:
newNode.next = self.head
self.head = newNode
else:
before = self._get_node(index-1)
newNode.next = before.next
before.next = newNode
self.count+=1
return True

if __name__ == "__main__":
L = LinkedList()
L.insert(0, 0)
L.insert(1, 1)
L.insert(2, 2)
L.insert(3, 3)
print(0 in L)

在遍历链表并检查其中是否有项目时,我感到很困惑。最后一行的 print(0 in L) 应该返回 True,因为 0 确实在链表中。

最佳答案

这是您问题的答案:

def __contains__(head,data):
if head == None:
return False
else:
p = head
while p is not None:
if p.data == data:
return True
p = p.next
return False

关于python - 如何检查项目是否在链接列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46249213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com