Insert a Node at the Beginning of a Singly Linked List

Inserting a Node at the Beginning

Inserting a node at the beginning of a singly linked list involves creating a new node and updating the head reference to point to this new node. This operation is efficient as it only requires updating a few pointers.

Step-by-Step Process

Consider a singly linked list with the following structure before insertion:

Head -> 1 -> 2 -> 3 -> 4 -> None

We want to insert a new node with the value 0 at the beginning. Follow these steps:

  1. Create a New Node: Create a new node with the desired value (0).
  2. Set the New Node's Next Reference: Update the next reference of the new node to point to the current head of the list.
  3. Update the Head Reference: Update the head reference to point to the new node.

After performing these steps, the linked list will have the following structure:

Head -> 0 -> 1 -> 2 -> 3 -> 4 -> None

Python Program to Insert a Node at the Beginning

class Node:
    def __init__(self, data): = data = None

class SinglyLinkedList:
    def __init__(self):
        self.head = None

    def append(self, data):
        new_node = Node(data)
        if self.head is None:
            self.head = new_node
            current = self.head
                current =
   = new_node

    def insert_at_beginning(self, data):
        new_node = Node(data) = self.head
        self.head = new_node

    def traverse(self):
        current = self.head
        while current:
            print(, end=" -> ")
            current =

# Example usage:
linked_list = SinglyLinkedList()
print("Linked list before insertion:")
linked_list.traverse()  # Output: 1 -> 2 -> 3 -> 4 -> None
print("Linked list after insertion at the beginning:")
linked_list.traverse()  # Output: 0 -> 1 -> 2 -> 3 -> 4 -> None

This Python program defines a singly linked list with methods for appending nodes, inserting a node at the beginning, and traversing the list. The insert_at_beginning method creates a new node, sets its next reference to the current head, and updates the head reference to the new node.