该函数搜索一个值的索引,如果再次调用它,则返回该值的下一个索引。这是我尝试过的,我得到的错误是我的列表没有被覆盖,每次调用后我都得到相同的结果。 注意:我没有在这里包括链表类 如果有人知道使用此功能的更好方法,请建议
class Node:
def __init__(self,value):
self.value = value
self.next = None
self.previous = None
class LinkedList:
def __init__(self):
self.head = None
self.tail = None
class DynamicSharpSearch(LinkedList):
def __init__(self, data):
super().__init__()
self.data = data
self.count = 0
self.lim = 0 # using in search function
for i in self.data:
self.InsertatEnd(i)
self.count += 1
self.demlst = [-1 for i in range(self.count)] # using in Search function only
self.seclist = self.demlst
def Search(self,n):
x = self.head
#demlst = [-1 for i in range(self.count)]
y = 0
tst = -1 # checks value if not in our data
##############################
for i in range(self.count):
if n == x.value:
# demlst.append(i)
self.demlst[y] = i
tst = 0
x = x.next
y += 1
##############################
if tst == -1:
return -1
else:
pass
"""Demlist containes "indexes" """
for i in range(self.count):
if self.seclist[i] >= 0:
#y = self.seclist[i]
self.seclist[i] = -1
self.lim = i
return i
obj = DynamicSharpSearch([53,4,52,7,5,4,5,5,5,6,4,2,4,5,459]) # c = 6
print(obj.Search(5))
print(obj.Search(5))
print(obj.Search(5))
我得到的输出:
4
4
4
我将使用字典来跟踪每个值最后返回的索引。 调用
Search
方法时,它会查看是否在:start_index = self.last_returned.get(n, 0)
之前查找过该值。如果start_index
是>;0,然后在开始搜索之前快进到该索引。找到要查找的内容后,请更新字典:self.last_returned[n] = returned_index + 1
。为什么是“+1”?因为否则你会得到你现在得到的,同样的索引一遍又一遍地返回。您需要在返回的最后一个索引之后开始搜索(但是,您需要确保存储的值不会导致索引器错误。)相关问题 更多 >
编程相关推荐