Introduction to Linked Lists in C++
A linked list is a fundamental data structure in C++ and other programming languages. It provides a flexible way to store and manage data elements. In this guide, we'll introduce you to linked lists in C++, including explanations and sample code.
1. What is a Linked List?
A linked list is a linear data structure where elements (nodes) are linked using pointers. Each node contains data and a reference (pointer) to the next node. Linked lists come in various forms, such as singly linked lists, doubly linked lists, and circular linked lists.
2. Singly Linked List
A singly linked list consists of nodes where each node points to the next node. The last node's pointer is set to null to indicate the end of the list. Here's an example of a singly linked list:
#include <iostream>
struct Node {
int data;
Node* next;
};
int main() {
// Create a linked list
Node* head = new Node{1, nullptr};
head->next = new Node{2, nullptr};
head->next->next = new Node{3, nullptr};
// Traverse the linked list
Node* current = head;
while (current != nullptr) {
std::cout << current->data << " ";
current = current->next;
}
return 0;
}
3. Doubly Linked List
A doubly linked list is similar to a singly linked list, but each node has pointers to both the next and the previous nodes. This allows for more efficient traversal in both directions. Here's an example of a doubly linked list:
#include <iostream>
struct Node {
int data;
Node* next;
Node* prev;
};
int main() {
// Create a doubly linked list
Node* head = new Node{1, nullptr, nullptr};
Node* second = new Node{2, nullptr, head};
head->next = second;
Node* third = new Node{3, nullptr, second};
second->next = third;
// Traverse the doubly linked list forward
Node* current = head;
while (current != nullptr) {
std::cout << current->data << " ";
current = current->next;
}
// Traverse the doubly linked list backward
current = third;
while (current != nullptr) {
std::cout << current->data << " ";
current = current->prev;
}
return 0;
}
4. Circular Linked List
A circular linked list is a linked list where the last node points back to the first node, forming a loop. It's commonly used in applications like managing tasks in a round-robin scheduler. Here's an example of a circular linked list:
#include <iostream>
struct Node {
int data;
Node* next;
};
int main() {
// Create a circular linked list with three nodes
Node* head = new Node{1, nullptr};
Node* second = new Node{2, nullptr};
Node* third = new Node{3, nullptr};
head->next = second;
second->next = third;
third->next = head; // Make it circular
// Traverse the circular linked list
Node* current = head;
do {
std::cout << current->data << " ";
current = current->next;
} while (current != head);
return 0;
}
5. Advantages and Use Cases
Linked lists are advantageous when you need efficient insertions and deletions in the middle of the list, as they only require changing pointers. Common use cases include implementing stacks, queues, and dynamic data structures.
Conclusion
Linked lists are versatile data structures that can be used in various scenarios. By understanding singly linked lists, doubly linked lists, and circular linked lists, you can employ these data structures to create efficient and flexible data storage solutions in your C++ programs.