我的算法书有一个用不同方法在 Python 上实现链表的方法。这是remove方法,但我不完全理解while循环。
这个实现依赖于Node之前定义的一个类,该类具有 、 、 等方法。get.data()列表get.next()本身set_next()是一个名为 的类UnorderedList。self.head指列表中的第一项。
此方法的思想remove是遍历列表,直到找到要删除的项目。我们创建 acurrent和 aprevious来跟踪我们正在查看的当前项目和之前的项目。
我的问题与 while 循环有关。我们设置的found目的False是当我们找到我们正在寻找的项目时更改它。但是,当我们说 时,while 循环不会改变foundto的值吗?Truenot found
我知道这是一个简单的问题,但我很难理解这个 while 循环为什么以及如何工作,因为在我的脑海中not通常使布尔值在其范围内与它的实际情况相反。有人可以向我解释一下吗?
顺便说一句,我不需要对当前代码进行任何解释或改进,这是书中的一个示例,这对我来说都很有意义,我只是想理解那部分。
def remove(self, item):
current = self.head
previous = None
found = False
while not found:
if current.get_data() == item:
found = True
else:
previous = current
current = current.get_next()
if previous == None:
self.head = current.get_next()
else:
previous.set_next(current.get_next())
LEATH
猛跑小猪
相关分类