You've successfully subscribed to Nicholas Workshop
Great! Next, complete checkout for full access to Nicholas Workshop
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.
Success! Your billing info is updated.
Billing info update failed.

Reverse a Linked List

Nicholas Wong
Nicholas Wong

Question

Reverse a linked list.

Sample

# node structure 
class Node: 
    value = None 
    next = None 
    def __init__(self, value, next_node=None): 
        self.value = value 
        self.next = next_node 

# reverse the linked list and return the head node 
def reverse_linked_list(head): 
    reversed_head = None 
    last_node = None 
    node = head 
    while node: 
        next_node = node.next 
        if next_node is None: 
            reversed_head = node 
        node.next = last_node 
        last_node = node 
        node = next_node 
    return reversed_head 

# linked list 
node_9 = Node(9) 
node_8 = Node(8, node_9) 
node_7 = Node(7, node_8) 
node_6 = Node(6, node_7) 
node_5 = Node(5, node_6) 
node_4 = Node(4, node_5) 
node_3 = Node(3, node_4) 
node_2 = Node(2, node_3) 
node_1 = Node(1, node_2) 
node_head = node_1 

# print current
print("original:", end=" ")
node_temp = node_head 
while node_temp: 
    print(node_temp.value, end=" ")
    node_temp = node_temp.next
print("")

# testing 
print("becomes: ", end=" ")
node_reversed_head = reverse_linked_list(node_head) 
node_temp = node_reversed_head 
while node_temp: 
    print(node_temp.value, end=" ")
    node_temp = node_temp.next
print("")
Algorithm

Nicholas Wong

Fullstack software engineer with strong background in computer science and extensive experience in software engineering and architecture. Studied in NYU, worked in Yahoo, Rakuten and Manulife.