Код: Выделить всё
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def display(self):
current = self.head
while current:
print(current.data, end = " -> ")
current = current.next
print("None")
def move_even_items_to_back(self):
# Find the last node
last_node = self.head
while last_node.next:
last_node = last_node.next
current = self.head
prev = Node(None)
prev.next = self.head
while current:
if current.data % 2 == 0:
temp = current.next
# Add the node to the back
newNode = Node(current.data)
newNode.next = None
last_node.next = newNode
last_node = last_node.next
# Moving the previous node
if prev: # Not the head
prev.next = current.next
else: # Move head
self.head = current.next
# Removing current node
current.next = None
# Moving on
current = temp
else:
prev = current
current = current.next
node1 = Node(2)
node2 = Node(3)
node3 = Node(4)
node4 = Node(7)
node5 = Node(15)
node6 = Node(18)
ll = LinkedList()
ll.head = node1
node1.next = node2
node2.next = node3
node3.next = node4
node4.next = node5
node5.next = node6
ll.display()
ll.move_even_items_to_back()
ll.display()
Подробнее здесь: https://stackoverflow.com/questions/794 ... inked-list