1.Essential C and C++ Concepts
- Arrays Basics
- Structures
- Pointers
- Reference in C++
- Pointer to Structure
- Functions
- Parameter Passing Methods
- Structures and Functions
- Converting a C program to a C++ class
2.Required Setup for Programming
- Online C and C++ compiler
- Setup CodeBlocks and Settings
- Setup Dev-C++ and Settings
- Debugging using Dev-C++ and CodeBlocks
- Setup and Debugging using Visual Studio
3.Introduction
- Stack vs Heap Memory
- Physical vs Logical Data Structures
- Abstract Datatypes
- Time and Space Complexity
4.Recursion
- Generalizing Recursion
- Static and Global Variables in Recursion
- Head, Tail, and Tree Recursion
- Indirect Recursion
- Nested Recursion
- Fibonacci Series using Recursion
5.Array Representation
- Array Declaration
- Static vs Dynamic Arrays
- Increasing Array Size
- 2D Arrays
- Row and Column Major Formula for 2D Arrays
- Formulas for 3D & nD Arrays
6.Array ADT
- Array ADT
- Inserting in an Array
- Deleting from Array
- Linear Search
- Binary Search
- Get( ) Set( ) Avg( ) Max( ) functions on Array
- Merging and Sorting Arrays
7.Strings
- Finding Length of a String
- Validating a String
- Reversing a String
8.Matrices
- C++ class for Diagonal Matrix
- Lower Triangular Matrix Row and Column Major Mapping
- Lower Triangular Matrix in C and C++
- Triangular Matrices
- Symmetric Matrix
9.Sparse Matrix and Polynomial Representation
- Sparse Matrix Representation
- Create Sparse Matrix
- Sparse Matrix using C++
- Polynomial Representation
- Polynomial Evaluation
- Polynomial Addition
- Coding Polynomial
10.Linked List
- Dynamic Data Structure Linked List
- Display Linked List
- Recursive Display of Linked List
- Sum of All Elements in a Linked List
- Searching in a Linked List
- Deleting from Linked List
- Reversing a Linked List
- Concatenating 2 Linked Lists
- Merging 2 Linked Lists
- 11.Sparse Matrix and Polynomial Representation using Linked List
- Sparse Matrix using Linked List
- Polynomial Representation using Linked List
12.Stacks
- Stack using Array
- Implementation of Stack using Array
- Stack using Linked List
- Stack Operations using Linked List
- Parenthesis Matching
- Infix to Postfix Conversion
- Associativity and Unary Operators
13.Queues
- Queue ADT
- Queue using Single Pointer
- Queue using Two Pointers
- Implementing Queue using Array
- Drawback of Queue using Array
- Circular Queue
- Double Ended Queue DEQUEUE
14.Trees
- Terminology
- Number of Binary Trees using N Nodes
- Height vs Nodes in Binary Tree
- Internal Nodes vs External Nodes in Binary Tree
- Strict Binary Tree
- Height vs Node of Strict Binary Tree
- Internal vs External Nodes of Strict Binary Trees
- n-ary Trees
- Analysis of n-Ary Trees
- Full vs Complete Binary Tree
15.Binary Search Trees
- Searching in a Binary Search Trees
- Inserting in a Binary Search Tre
- Creating a Binary Search Tree
- Deleting from Binary Search Tree
- Program for Generating BST from Preorder
16.AVL Trees
- Inserting in AVL with Rotations
- General form of AVL Rotations
- Generating AVL Tree
- Deletion from AVL Tree with Rotations
- Height Analysis of AVL Trees
17.Search Trees
- 2-3 Trees
- 2-3-4 Trees
- Red-Black Trees
- Red-Black Trees vs 2-3-4 Trees
- Creating Red-Black Tree similar to Creating 2-3-4 Tree
18.Heap
- Inserting in a Heap
- Creating a Heap
- Deleting from Heap and Heap Sort
- Heap as Priority Queue
19.Sorting Technique
- Criteria used for Analysing Sorts
- Bubble Sort
- Insertion Sort
- Selection Sort
- Quick Sort
- Merging
- Recursive Merge Sort
- Count Sort
- Bin / Bucket Sort
- Radix Sort
- Shell Sort
20.Hashing Technique
- Chaining
- Linear Probing
- Quadratic Probing
- Double Hashing
- Hash Function Ideas
21.Graphs
- Directed and Undirected Graphs
- Breadth First Search
- Depth First Search
- Spanning Trees
- Prim's Minimum Cost Spanning Tree
- Kruskal's Minimum Cost Spanning Tree
- Disjoint Subsets
22.Asymptotic Notations
- Big Oh
- Omega
- Theta