- Merge Sort
- Selection Sort
- Bubble Sort
- Insertion Sort
- Shell Sort
- Quick Sort
- Heap Sort
- Radix Sort
- Linear Search
- Binary Search
- Interpolation Search
- Exponential Search
- Fibonacci Search
- Jump Search
- Ternary Search
- Addition & Subtraction
- Multiplication
- Transposition
- Determinant
- Inversion
- Eigenvalues & Eigenvectors
- LU Decomposition
- Singular Value Decomposition
- Matrix Exponentiation
- Kronecker Product
- Hadamard Product
- Insert at the Beginning: Add a node to the front of the list.
- Insert at the End: Add a node to the end of the list.
- Insert at a Position: Insert a node at a specific position.
- Insert nodes in ascending order: Insert nodes in ascending order.
- Delete a Node: Remove a node from the list (beginning).
- Delete a Node: Remove a node from the list (middle).
- Delete a Node: Remove a node from the list (end).
- Search for a Node: Find the position of a node by its value.
- Traverse the List: Go through the entire list and print the values.
- Reverse the List: Reverse the order of the nodes.
- Length of the List: Find the number of nodes in the list.
- Detect Cycle: Check if the list has a cycle (for circular linked lists).
- Delete List: Remove all nodes from the list.
- Merge Two Lists: Merge two sorted linked lists into one.
- Find Middle Node: Use two pointers to find the middle node of the list.
- Nth Node from the End: Get the nth node from the end using a two-pointer approach.
- Doubly Linked List: Implement a linked list with pointers to both the next and previous nodes.
- Circular Linked List: Implement a circular linked list where the last node points to the first.
- Clone a Linked List: Create a deep copy of a linked list.
- Flattening a Multi-Level Linked List: If a node can point to another list, flatten it into a single list.
- Skip List: An advanced data structure that allows faster search within an ordered sequence by maintaining multiple layers of linked lists.
- Push: Insert an element at the top of the stack.
- Pop: Remove the top element from the stack.
- Peek/Top: Get the top element without removing it.
- isEmpty: Check if the stack is empty.
- Stack using Linked List: Implement a stack using a linked list.
- Reverse a Stack: Reverse the elements in a stack using recursion or another stack.
- Balanced Parentheses: Check if a string has balanced parentheses (expression evaluation).
- Infix to Postfix Conversion: Convert an infix expression to postfix using a stack.
- Stack in Recursion: Understand how function calls use a stack for recursion.
- Min/Max Stack: Design a stack that supports push, pop, and retrieving the minimum/maximum element in O(1) time.
- Evaluate Postfix Expression: Evaluate a postfix expression using a stack.
- Enqueue: Insert an element at the rear of the queue.
- Dequeue: Remove an element from the front of the queue.
- Peek/Front: Get the front element without removing it.
- isEmpty: Check if the queue is empty.
- Circular Queue: Implement a circular queue where the last position connects to the first.
- Queue using Stack: Implement a queue using two stacks.
- Reverse a Queue: Reverse a queue using recursion or another queue/stack.
- Deque (Double-Ended Queue): Implement a deque where elements can be added/removed from both ends.
- Priority Queue: Implement a priority queue where elements are ordered by priority, not just FIFO.
- Sliding Window Maximum: Given an array and a window size, find the maximum of each sliding window of size k.
- LRU Cache: Implement an LRU (Least Recently Used) cache using a queue and a hash map.
- Queue in OS Scheduling: Learn how queues are used in scheduling algorithms like Round Robin in operating systems.
- Insertion: Insert a node in a binary tree.
- Preorder Traversal: Visit nodes in root-left-right order.
- Inorder Traversal: Visit nodes in left-root-right order.
- Postorder Traversal: Visit nodes in left-right-root order.
- Level Order Traversal: Traverse the tree level by level using a queue (BFS for trees).
- Binary Search Tree (BST): Implement a binary search tree with insertion, deletion, and search.
- Height of a Tree: Find the height of a binary tree (the longest path from root to a leaf).
- Lowest Common Ancestor (LCA): Find the lowest common ancestor of two nodes in a BST.
- Balanced Binary Tree: Check if a binary tree is height-balanced (difference between heights of subtrees is ≤ 1).
- Diameter of a Binary Tree: Find the longest path between any two nodes in a tree.
- AVL Tree: Implement a self-balancing BST with rotations.
- Red-Black Tree: Another self-balancing BST with additional constraints.
- Trie: Implement a trie (prefix tree) for efficient string searching.
- Segment Tree: Implement a segment tree for range queries (sum, min, max) over an array.
- Fenwick Tree (Binary Indexed Tree): A more efficient data structure than segment trees for range updates and queries.
- Graph Representation: Represent a graph using an adjacency list and an adjacency matrix.
- Depth-First Search (DFS): Explore the graph depth-wise.
- Breadth-First Search (BFS): Explore the graph level-wise.
- Detect Cycle: Detect a cycle in a graph (directed and undirected).
- Shortest Path (BFS): Find the shortest path between two nodes in an unweighted graph.
- Topological Sorting: Perform topological sorting on a directed acyclic graph (DAG).
- Connected Components: Find all connected components in an undirected graph.
- Dijkstra's Algorithm: Find the shortest path in a weighted graph (positive weights).
- A Algorithm*: A pathfinding and graph traversal algorithm that improves over Dijkstra's algorithm by using heuristics.
- Kruskal's Algorithm: Find the minimum spanning tree using a union-find structure.
- Prim's Algorithm: Another algorithm to find the minimum spanning tree.
- Bellman-Ford Algorithm: Compute shortest paths in a graph that may have negative edge weights.
- Floyd-Warshall Algorithm: Find shortest paths between all pairs of nodes (all-pairs shortest paths).
- Backtracking in Graphs: Implement backtracking algorithms like Hamiltonian Path, coloring problem, and N-Queens problem.
- Strongly Connected Components (SCCs): Find strongly connected components in directed graphs using Kosaraju's or Tarjan's algorithm.