If you’re new to data structures, one of the first things you’ll hear about is the Linked List. It might sound tricky at first, but once you get the idea, it’s actually pretty simple — and super useful too.
In this post, we’ll explain what a linked list is, how it works in a simple way, and where you might use it in real-life coding situations.
What is a Linked List?
A linked list is a linear data structure that consists of a sequence of nodes, where each node contains data and a reference (or link) to the next node in the sequence
1. Data – The value stored
2. Pointer (next) – A reference to the next node in the list
Unlike arrays, linked lists don’t use continuous memory blocks. This means elements can be stored anywhere in memory and still be connected.
Do You Want to learn about Difference between binary and binary search
Structure of a Node
class Node:
def _init_(self, data):
self.data = data
self.next = None
A Node stores the value and points to the next node.
Types of Linked Lists
1. Singly Linked List
A singly linked list is a linear data structure where each element, called a node, contains data and a pointer to the next node in the sequence. This structure allows for traversal in only one direction, from the first node (head) to the last node (tail), which has a pointer to NULL.
[10] → [20] → [30] → None
2. Doubly Linked List
A doubly linked list is a type of linked list where each node contains a data element and two pointers: one pointing to the next node in the sequence and another pointing to the previous node.
None ← [10] ⇄ [20] ⇄ [30] → None
3. Circular Linked List
A circular linked list is a variation of a standard linked list where the last node’s pointer (or “next” pointer) points back to the first node, forming a circular structure.
[10] → [20] → [30] → back to [10]
Basic Operations
Operation Description
Insertion Add node at beginning, end, or middle
Deletion Remove node from any position
Traversal Loop through all nodes one by one
Search Find a value in the list
Example: Creating a Simple Linked List in Python
class Node:
def _init_(self, data):
self.data = data
self.next = None
# Creating nodes
node1 = Node(10)
node2 = Node(20)
node3 = Node(30)
# Linking nodes
node1.next = node2
node2.next = node3
# Traversing
current = node1
while current:
print(current.data)
current = current.next
Output:
10
20
30
When to Use Linked Lists?
- When frequent insertions or deletions are required
- When memory usage needs to be flexible
- In building stacks, queues, graphs, and hash tables
Array vs Linked List
Feature Array Linked List
Memory Fixed (contiguous) Dynamic (non-contiguous)
Insertion/Deletion Slower (O(n)) Faster (O(1) at ends)
Access by Index Fast (O(1)) Slow (O(n))
Interview Tip
Q: Why would you use a linked list instead of an array?
A: Linked lists are better when you need efficient insert/delete operations, or when the size of the data changes frequently.
Summary
- A linked list is a flexible, pointer-based data structure.
- It is especially useful for dynamic memory allocation and real-time operations.
- It comes in 3 types: singly, doubly, and circular linked lists.