1. Introduction to DSA and Complexity Analysis
- Importance of DSA in Problem Solving
- Time Complexity
-
- Big-O, Big-Theta, Big-Omega Notations
- Best Case, Worst Case, Average Case Analysis
- Complexity of Iterative and Recursive Algorithms
- Space Complexity
-
- Memory Usage in Recursive and Iterative Algorithms
2. Arrays
- Introduction to Arrays
-
- Static vs. Dynamic Arrays
- Memory Allocation
- Array Operations
-
- Insertion, Deletion, Traversal
- Searching in Arrays
-
- Linear Search
- Binary Search
- 2D Arrays and Matrix Operations
-
- Transpose, Addition, and Multiplication
- Strings
-
- Character Arrays and String Class in C++
- String Manipulation (Concatenation, Substring, Reversal)
- Pattern Matching (Naive Algorithm)
3. Linked Lists
- Singly Linked List
- Structure and Advantages
- Insertion and Deletion Operations
- Doubly Linked List
- Structure and Traversals (Forward and Backward)
- Insertion and Deletion Operations
- Circular Linked List
- Basics and Operations
- Applications of Linked Lists
- Merging Linked Lists
- Finding Middle Element
4. Stacks and Queues
- Stack
- Concept and Applications
- Implementation Using Arrays and Linked Lists
- Queue
- Concept and Applications
- Implementation Using Arrays and Linked Lists
- Circular Queue
- Concept and Implementation
- Priority Queue
- Basics and Implementation
5. Trees
- Binary Tree
- Structure and Use Cases
- Traversals (Preorder, Inorder, Postorder)
- Binary Search Tree (BST)
- Concept and Applications
- Operations (Insertion, Deletion, Search)
- Introduction to Advanced Trees
- AVL Trees
- Heaps
6. Graphs
- Basics of Graphs
- Representation (Adjacency Matrix/List)
- Directed vs. Undirected Graphs
- Graph Traversals
- Breadth-First Search (BFS)
- Depth-First Search (DFS)
7. Hashing
- Basics of Hashing
- Hash Functions and Applications
- Collision Handling
- Chaining
- Open Addressing
8. Sorting Algorithms
- Bubble Sort
- Selection Sort
- Merge Sort
- Quick Sort
9. Searching Algorithms
- Linear Search
- Binary Search (Iterative and Recursive)
10. Dynamic Programming (DP)
- Introduction to DP
- Common DP Problems
- Fibonacci Series
- Knapsack Problem