Bird
Raised Fist0
DSA Pythonprogramming~5 mins

Push Using Linked List Node in DSA Python - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Push Using Linked List Node
O(1)
Understanding Time Complexity

We want to understand how long it takes to add a new item at the start of a linked list.

How does the time needed change as the list grows?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.

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

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

    def push(self, new_data):
        new_node = Node(new_data)
        new_node.next = self.head
        self.head = new_node

This code adds a new node at the beginning of the linked list.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Creating a new node and updating pointers.
  • How many times: This happens once per push call, no loops or recursion inside.
How Execution Grows With Input

Adding a node always takes the same steps, no matter how big the list is.

Input Size (n)Approx. Operations
103 steps (create node, update pointers)
1003 steps (same as above)
10003 steps (still the same)

Pattern observation: The time stays constant regardless of list size.

Final Time Complexity

Time Complexity: O(1)

This means adding a node at the start takes the same short time no matter how many nodes are already in the list.

Common Mistake

[X] Wrong: "Adding a node takes longer as the list grows because we have to move through the list."

[OK] Correct: We only change the first node's pointer, so we never walk through the list. The operation is always quick.

Interview Connect

Knowing this helps you explain why linked lists are good for quick insertions at the start, a useful skill in many coding problems.

Self-Check

"What if we changed push to add a node at the end of the linked list? How would the time complexity change?"

Practice

(1/5)
1. What does the push operation do in a linked list when using a node?
easy
A. Removes the last node from the linked list
B. Searches for a node with a specific value
C. Deletes the first node of the linked list
D. Adds a new node at the beginning of the linked list

Solution

  1. Step 1: Understand push operation meaning

    Push means adding a new element to the start of the linked list.
  2. Step 2: Identify push effect on linked list

    The new node becomes the head, pointing to the old head node.
  3. Final Answer:

    Adds a new node at the beginning of the linked list -> Option D
  4. Quick Check:

    Push = Add at start [OK]
Hint: Push always adds node at the start of the list [OK]
Common Mistakes:
  • Thinking push adds at the end
  • Confusing push with pop (removal)
  • Assuming push deletes nodes
2. Which of the following is the correct syntax to create a new node and push it to the front of a linked list in Python?
easy
A. head.next = Node(data); head = head.next
B. head = Node(data); head.next = new_node
C. new_node = Node(data); new_node.next = head; head = new_node
D. new_node = Node(data); head = new_node.next

Solution

  1. Step 1: Create new node with data

    Use new_node = Node(data) to create a node.
  2. Step 2: Link new node to current head and update head

    Set new_node.next = head and then head = new_node.
  3. Final Answer:

    new_node = Node(data); new_node.next = head; head = new_node -> Option C
  4. Quick Check:

    Correct push syntax = new_node = Node(data); new_node.next = head; head = new_node [OK]
Hint: New node points to head, then head updates to new node [OK]
Common Mistakes:
  • Assigning head before linking new_node.next
  • Confusing order of assignments
  • Using undefined variables
3. What will be the linked list after executing the following code?
class Node:
    def __init__(self, data):
        self.data = data
        self.next = None

def push(head, data):
    new_node = Node(data)
    new_node.next = head
    head = new_node
    return head

head = None
head = push(head, 10)
head = push(head, 20)
head = push(head, 30)
medium
A. 30 -> 20 -> 10 -> null
B. 10 -> 20 -> 30 -> null
C. 30 -> 10 -> 20 -> null
D. 20 -> 30 -> 10 -> null

Solution

  1. Step 1: Push 10 to empty list

    List becomes 10 -> null.
  2. Step 2: Push 20 to front

    New head is 20, pointing to 10: 20 -> 10 -> null.
  3. Step 3: Push 30 to front

    New head is 30, pointing to 20: 30 -> 20 -> 10 -> null.
  4. Final Answer:

    30 -> 20 -> 10 -> null -> Option A
  5. Quick Check:

    Push adds at front, last pushed is first [OK]
Hint: Last pushed node is always the head [OK]
Common Mistakes:
  • Assuming push adds at end
  • Not updating head after push
  • Mixing order of nodes
4. Find the error in this push function for a linked list:
def push(head, data):
    new_node = Node(data)
    head = new_node
    new_node.next = head
    return head
medium
A. new_node is not created properly
B. new_node.next is set after head is updated, causing a loop
C. head is not returned
D. Function does not accept head as parameter

Solution

  1. Step 1: Analyze assignment order

    head is set to new_node before linking new_node.next.
  2. Step 2: Identify pointer mistake

    new_node.next = head sets next to itself, creating a loop.
  3. Final Answer:

    new_node.next is set after head is updated, causing a loop -> Option B
  4. Quick Check:

    Link new_node.next before updating head [OK]
Hint: Set new_node.next before changing head [OK]
Common Mistakes:
  • Assigning head before linking next
  • Creating self-referential loops
  • Forgetting to return head
5. Given a linked list with nodes 5 -> 15 -> 25 -> null, what will be the list after pushing nodes with values 35 and 45 in order using the push function?
head = Node(5)
head.next = Node(15)
head.next.next = Node(25)
head = push(head, 35)
head = push(head, 45)
hard
A. 45 -> 35 -> 5 -> 15 -> 25 -> null
B. 5 -> 15 -> 25 -> 35 -> 45 -> null
C. 35 -> 45 -> 5 -> 15 -> 25 -> null
D. 45 -> 35 -> 25 -> 15 -> 5 -> null

Solution

  1. Step 1: Original list is 5 -> 15 -> 25 -> null

    Head points to 5, which points to 15, then 25.
  2. Step 2: Push 35

    New node 35 points to head (5), head updates to 35: 35 -> 5 -> 15 -> 25 -> null.
  3. Step 3: Push 45

    New node 45 points to head (35), head updates to 45: 45 -> 35 -> 5 -> 15 -> 25 -> null.
  4. Final Answer:

    45 -> 35 -> 5 -> 15 -> 25 -> null -> Option A
  5. Quick Check:

    Push adds nodes at front in order [OK]
Hint: New nodes become new head, pushing old nodes back [OK]
Common Mistakes:
  • Appending instead of pushing at front
  • Mixing node order after pushes
  • Not updating head after push
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard