我尝试了以下代码来反转链表,但得到了一个无限循环作为错误。你能告诉我这种方法出了什么问题吗。
def reverse(self):
temp = curr = self.head #curr refers to the next node
prev = None
while temp:
curr = temp.next #curr goes to the next node of temp
curr.next = temp #curr node points to its previous node temp
prev = temp #prev moves to the next node
temp = curr
#self.head.next = None
self.head = prev
您的方法中存在逻辑错误。
在while循环的第一次循环结束时:
- curr(列表中的第二个元素(
- curr.next(列表中的第一个元素(
- temp=curr=(列表中的第二个元素(
在while循环的第二次循环中。您希望使用temp.next到达第三个元素。这是错误的,因为:
- temp.next=curr.next=(列表中的第一个元素(
让您在第一个和第二个元素之间无限循环,没有退出条件。
我会让你来想办法解决这个问题。
(提示:应将温度分配给第一遍中的???元件(