blckknght , , , , , , - Python, . .
previous, current, tmp.
def reverse(head):
current = head
previous = None
while current:
tmp = current.next
current.next = previous
previous = current
current = tmp
head = previous
n3 3 (head = n1, tail = n3).
n1 → n2 → n3
while , previous None, (n1).
previous, current, tmp "" , .
previous = None
[n1] → [n2] → [n3] current tmp current.next = previous
[n1] → [n2] → [n3] previous current tmp current.next = previous
[n1] → [n2] → [n3] previous current current.next = previous
while , current == None previous, .
Python ( str). tmp next next - . , .
class Node:
def __init__(self, value):
self.value = value
self.next = None
def __str__(self):
return str(self.value)
def set_next(self, value):
self.next = Node(value)
return self.next
class LinkedList:
def __init__(self, head=None):
self.head = head
def __str__(self):
values = []
current = self.head
while current:
values.append(str(current))
current = current.next
return ' -> '.join(values)
def reverse(self):
previous = None
current = self.head
while current.next:
tmp = current.next
current.next = previous
previous = current
current = tmp
current.next = previous
self.head = current
if __name__ == "__main__":
head = Node('a')
head.set_next('b').set_next('c').set_next('d').set_next('e')
ll = LinkedList(head)
print(ll)
ll.revevse()
print(ll)
a -> b -> c -> d -> e
e -> d -> c -> b -> a