Software Engineering


Mastering Data Structures & Algorithms using C and C++

Learn, Analyse and Implement Data Structure using C and C++. Learn Recursion and Sorting.

4.67 (14851 reviews)



58.5 hours


Nov 2020

Last Update
Regular Price

What you will learn

Learn various Popular Data Structures and their Algorithms.

Develop your Analytical skills on Data Structure and use then efficiently.

Learn Recursive Algorithms on Data Structures

Learn about various Sorting Algorithms

Implementation of Data Structures using C and C++


You may be new to Data Structure or you have already Studied and Implemented Data Structures but still you feel you need to learn more about Data Structure in detail so that it helps you solve challenging problems and used Data Structure efficiently.

This 53 hours of course covers each topic in greater details, every topic is covered on Whiteboard which will improve your Problem Solving and Analytical Skills. Every Data Structure is discussed, analysed and implemented with a Practical line-by-line coding.

Source code for all Programs is available for you to download

About Instructor

I am the Instructor of this course, I have been teaching this course to university students for a long period of time, I know the pulse of students very well, I know how to present the topic so that it’s easy to grasp for students.

I know how to use White board to explain the topic and also to make it memorable. Remembering the thing and using them in right place is more important than just understanding the topic.

After Completing Course

 After completing this course you will be confident enough to take up any challenging problem in coding using Data Structures.

Course Contents

1. Recursion

2. Arrays Representation

3. Array ADT

4. Linked List

5. Stack

6. Queues

7. Trees

8. Binary Search Tree

9. AVL Trees

10. Graphs

11. Hashing Technique


Mastering Data Structures & Algorithms using C and C++
Mastering Data Structures & Algorithms using C and C++
Mastering Data Structures & Algorithms using C and C++
Mastering Data Structures & Algorithms using C and C++


Before we Start

Instructor's Note


Essential C and C++ Concepts

Arrays Basics



Reference in C++

Pointer to Structure


Parameter Passing Methods

Array as Parameter

Structure as Parameter

Structures and Functions (Must Watch)

Converting a C program to a C++ class (Must Watch)

C++ Class and Constructor

Template classes

Required Setup for Programming

Setup Dev-C++ and Settings

Setup CodeBlocks and Settings

Debugging using Dev-C++

Debugging using CodeBlocks

Setup Visual Studio

Debugging using Visual Studio

Setup Xcode



Stack vs Heap Memory

Stack vs Heap. Continued...

Physical vs Logical Data Structures


Time and Space Complexity

Time and Space Complexity from Code


How Recursion Works ( Tracing )

Generalising Recursion

How Recursion uses Stack

Recurrence Relation - Time Complexity of Recursion

Lets Code Recursion

Static and Global Variables in Recursion

Let's Code Static and Global in Recursion

Tail Recursion

Head Recursion

Tree Recursion

Let's Code Tree Recursion

Indirect Recursion

Let's Code Indirect Recursion

Nested Recursion

Let's Code Nested Recursion

Sum of Natural Number using Recursion

Let's Code Sum of N using Recursion

Factorial using Recursion

Let's Code Factorial using Recursion

Power using Recursion

Let's Code Power Recursion

Taylor Series using Recursion

Let's Code Taylor Series using Recursion

Taylor Series using Horner's Rule

Let's Code Taylor Series Horner's Rule - Recursion

Let's Code Taylor Series Iterative

Fibonacci Series using Recursion - Memoization

Let's Code Fibonacci

nCr using Recursion

Let's Code nCr using Recursion

Tower of Hanoi Problem

Let's Code Tower of Hanoi


Quiz 1 Solutions

Arrays Representations

Introduction to Array

Declarations of Array

Demo - Array Declaration

Static vs Dynamic Arrays

Demo - Static vs Dynamic Array

How to Increase Array Size

Demo - Increasing Array Size

2D Arrays

Demo - 2D Array

Array Representation by Compiler

Row Major Formula for 2D Arrays

Column Major Formula for 2D Arrays

Formulas for nD Arrays

Formulas for 3D Arrays

Arrays Representation

Solutions for Quiz 2

Array ADT

Array ADT

Demo - Array ADT

Inserting in an Array

Let's Code Insert

Deleting from Array

Let's Code Delete

Linear Search

Improving Linear Search

Let's Code Linear Search

Binary Search

Binary Search Algorithm

Let's Code Binary Search

Analysis of Binary Search

Average Case Analysis of Binary Search

Get( ) Set( ) Avg( ) Max( ) functions on Array

Let's Code Get() Set() Max() on Array

Reverse and Shift an Array

Lest's Code Reversing an Array

Check if Array is Sorted

Let's Code to check if Array is Sorted

Merging Arrays

Let's Code to Merge Arrays

Set operations on Array - Union, Intersection and Difference

Let's Code Set operations on Array

Let's Code a Menu Driver program for Arrays

Let's convert C program for Array to C++

Let's Put all together in C++ program for Array

Student Challenge : Finding Single Missing Element in an Array

Student Challenge : Finding Multiple Missing Elements in an Array

Student Challenge : Finding Missing Element in an Array Method 2

Student Challenge Finding Duplicates in a Sorted Array

Student Challenge : Finding Duplicates in Sorted Array using Hashing

Student Challenge : Finding Duplicates in a Unsorted Array

Student Challenge : Finding a Pair of Elements with sum K

Student Challenge : Finding a Pair of Elements with sum K in Sorted Array

Student Challenge : Finding Max and Min in a single Scan

Array ADT

Solutions for Quiz 3


Introduction to Strings

Finding Length of a String

Changing Case of a String

Counting Words and Vowels in a String

Validating a String

Reversing a String

Comparing Strings and Checking Palindrome

Finding Duplicates in a String

Finding Duplicates in a String using Bitwise Operations

Checking if 2 Strings are Anagram

Permutation of String


Section Introduction

Diagonal Matrix

Let's Code Diagonal Matrix

C++ class for Diagonal Matrix

Let's Code C++ class for Diagonal matrix

Lower Triangular Matrix Row-Major Mapping

Lower Triangular Matrix Column-Major Mapping

Let's Code Lower Triangular Matrix in C

Let's Code Lower Triangular Matrix in C++

Upper Triangular Matrix Row-Major Mapping

Upper Triangular Matrix Column-Major Mapping

Symmetric Matrix

Tri-Diagonal and Tri-Band Matrix

Toeplitz Matrix

Menu Driven Program for Matrices

Menu Driven Program for Matrices using Functions

How to Write C++ Classes for All Matrices


Sparse Matrix and Polynomial Representation

Sparse Matrix Representation

Addition of Sparse Matrices

Array Representation of Sparse Matrix

Let's Code to Create Sparse Matrix

Program for Adding Sparse Matrix

Let's Code to Add Sparse Matrix

Let's Code Sparse Matrix using C++

Let's Code Sparse Matrix using C++ Continued.....

Polynomial Representation

Polynomial Evaluation

Polynomial Addition

Let's Code Polynomial

Linked List

Why we need Dynamic Data Structure Linked List

About Linked List

More About Linked List

Display Linked List

Let's Code Display for Linked List

Recursive Display of Linked List

Let's Code Recursive Display for Linked List

Counting Nodes in a Linked List

Sum of All Elements in a Linked List

Let's Code Count and Sum

Maximum Element in a Linked List

Let's Code Max for Linked List

Searching in a Linked List

Improve Searching in Linked List

Let's Code Searching in Linked List

Inserting in a Linked List

Let's Code Insert for Linked List

Creating a Linked List using Insert

Creating a Linked List by Inserting at Last

Inserting in a Sorted Linked List

Let's Code Insert in Sorted Linked List

Deleting from Linked List

Let's Code Delete on Linked List

Check if a Linked List is Sorted

Let's Code to check if Linked List is Sorted

Remove Duplicates from Linked List

Let's Code to Remove Duplicates from Linked List

Reversing a Linked List

Reversing using Sliding Pointers

Recursive Reverse for Linked List

Let's Code Reversing a Linked List

Concatenating 2 Linked Lists

Merging 2 Linked Lists

Let's Code to Concatenate and Merge Linked Lists

Check for LOOP in Linked List

Let's Code to Check LOOP

Let's Code a C++ class for Linked List

Circular Linked List

Display Circular Linked List

Le's Code Circular Linked List

Inserting in a Circular Linked List

Let's Code Insert for a Circular Linked List

Deleting From Circular Linked List

Let's Code for Circular Linked List

Doubly Linked List

Let's Code Doubly Linked List

Insert in a Doubly Linked List

Let's Code Insert for Doubly Linked List

Deleting from Doubly Linked List

Let's Code Delete for Doubly Linked List

Reverse a Doubly Linked List

Let's Code Reverse for Doubly Linked List

Circular Doubly Linked List

Comparison of Linked List

Comparison of Array with Linked List

Student Challenge : Finding Middle Element of a Linked List.

Student Challenge : Finding Intersecting point of Two Linked List

Linked List

Sparse Matrix and Polynomial using Linked List

Student Challenge : Sparse Matrix using Linked List

Student Challenge: Polynomial Representation using Linked List

Let's Code Polynomial


Introduction to Stack

Stack using Array

Implementation os Stack using Array

Let's Code Stack using Array

Stack using Linked List

Stack Operations using Linked List

Let's Code Stack using Linked List

Let's Code C++ class for Stack using Linked List

Parenthesis Matching

Program for Parenthesis Matching

Let's Code Parenthesis Matching

More on Parenthesis Matching

Infix to Postfix Conversion

Associativity and Unary Operators

Infix to Postfix using Stack Method 1

Infix to Postfix using Stack Method 2

Program for Infix to Postfix Conversion

Let's Code Infix to Postfix Conversion

Student Challenge: Infix to Postfix with Associativity and Parenthesis

Evaluation of Postfix Expression

Program for Evaluation of Postfix

Let's Code Evaluation of Postfix



Queue ADT

Queue using Single Pointer

Queue using Two Pointers

Implementing Queue using Array

Let's Code Queue using Array

Let's Code Queue in C++

Drawback of Queue using Array

Circular Queue

Let's Code Circular Queue

Queue using Linked List

Let's Code Queue using Linked List

Double Ended Queue DEQUEUE

Priority Queues

Queue using 2 Stacks




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

Representation of Binary Tree

Linked Representation of Binary Tree

Full vs Complete Binary Tree

Strict vs Complete Binary Tree

Binary Tree Traversals

Binary Tree Traversal Easy Method 1

Binary Tree Traversal Easy Method 2

Binary Tree Traversal Easy Method 3

Creating Binary Tree

Program to Create Binary Tree

Let's Code Creating Binary Tree

Let's Code Creating Binary Tree in C++

Preorder Tree Traversal

Inorder Tree Traversals Functions

Iterative Preorder

Iterative Inorder

Let's Code Iterative Traversals

Level Order Traversal

Let's Code Level Order Traversal

Can we Generate Tree from Traversals

Generating Tree from Traversals

Height and Count of Binary Tree

Let's Code Height and Count

Student Challenge : Count Leaf Nodes of a Binary Tree

Binary Trees

Binary Search Trees

BST intro

Searching in a Binary Search Tree

Inserting in a Binary Search Tree

Recursive Insert in Binary Search Tree

Creating a Binary Search Tree

Let's code Binary Search Tree

Deleting from Binary Search Tree

Let's Code Recursive Insert and Delete on BST

Generating BST from Preorder

Program for Generating BST from Preorder

Drawbacks of Binary Search Tree

Binary Search Trees

AVL Trees

Introduction to AVL Trees

Inserting in AVL with Rotations

General form of AVL Rotations

Let's Code LL Rotation on AVL

Let's Code LR Rotation on AVL

Generating AVL Tree

Deletion from AVL Tree with Rotations

Height Analysis of AVL Trees

Search Trees

2-3 Trees

2-3-4 Trees

Re-Black Trees Introduction

Red-Black Tree creation

Red-Black Trees vs 2-3-4 Trees

Creating Red-Black Tree similar to Creating 2-3-4 Tree

Red-Black Tree Deletion Cases

Red-Black Tree Deletion Examples

Red-Black Tree vs 2-3-4 Tree Deletion


Introduction to Heap

Inserting in a Heap

Program to Insert in a Heap

Creating a Heap

Deleting from Heap and Heap Sort

Let's Code Heap Sort

Heapify - Faster Method for creating Heap

Heap as Priority Queue

Sorting Techniques

Criteria used for Analysing Sorts

Bubble Sort

Let's Code Bubble Sort

Insertion Sort

Insertion Sort Continued....

Program for Insertion Sort

Analysis of Insertion Sort

Let's Code Insertion Sort

Comparing Bubble and Insertion Sort

Selection Sort

Program for Selection Sort

Analysis of Selection Sort

Let's Code Selection Sort

Idea behind Quick Sort

Quick Sort

Analysis of Quick Sort

Analysis of Quick Sort Continued.....

Let's Code Quick Sort


Iterative Merge Sort

Let's Code Iterative Merge Sort

Recursive Merge Sort

Let's Code Recursive Merge Sort

Count Sort

Let's Code Count Sort

Bin / Bucket Sort

Radix Sort

Shell Sort

Let's Code Shell Sort

Hashing Technique

Introduction to Hashing


Let's Code Chaining

Linear Probing

Let's Code Linear Probing

Quadratic Probing

Double Hashing

Hash Function Ideas



Introduction to Graphs

Representation of Undirected Graph

Representation of Directed Graphs

Breadth First Search

Program for BFS

Depth First Search

Program for DFS

Let's Code BFS & DFS

Spanning Trees

Prim's Minimum Cost Spanning Tree

Prim's Program

Let's Code Prim's using

Kruskal's Minimum Cost Spanning Tree

Disjoint Subsets

Kruskal's Program

Let's Code Kruskla's Program


Asymptotic Notations

Asymptotic Notations Big Oh , Omega , Theta

PDF for All Programs


Amar9 October 2020

time course is taking but effective if any one who have enough time can take this course. it's very helpful.

Raj6 October 2020

First of all This course was recommended by my one of the senior and after attending lectures I have gained some confidence to solve the problem related to DSA , when I started the class I am surprised that in just 15min my all confusions are cleared about how linklist works , ......I highly recommend this course to everyone to know how easy is DSA

Himanshu6 October 2020

My internet speed is very good still the video is buffering. Please fix it as soon as possible. Content is too good.

Benjamin5 October 2020

This class is very good, definitely covers the topic with in great detail. My only suggestion for improvement would be to include even more implementation exercises.

Rishabh3 October 2020

Amazing content and teaching method. Explanation with very good examples. Sir will make you understand every little detail about programming. But, dedication is required to complete the course!

Parag2 October 2020

Nice board work to explain the concepts of algorithms and data structure. But, the examples explained uses only and not other data types or custom data types. Would help software developers if real time examples are used. However, the way concepts are explained is too fantastic.

Xavier14 February 2020

The explanations are clear and simple to understand, even the most advanced concepts get simplified in a way that they are understood at first pass. The whiteboard concept is really helpful as it helps to cement the fundamental logic before diving into the code. Excellent course, thank you Abdul.

Dhanu10 February 2020

It was excellent course .The way he teaches is amazing understandable and the topics which are covered are worthfull. Quiz questions are interesting .Totally it is worth taking this course to gain the knowledge about data structures and algorithms.

Anonymus10 February 2020

May allah fullfil all your dreams and wishes thank you sir. An Awesome teacher , i was a noob at data structures , sir you helped me in such a way that earlier i was not able to imagine how the work is going inside but now i am able to code deep into . sir i am from a village where i earn and learn from my budget , i am feeling lucky that i found your course this course deserves each penny .

Abinash9 February 2020

My Feedback: Thank you for your time and effort. I definately learned few insight and in some cases simple way to look at the complex understanding. But i also strongly feel that, many videos are unnecessiry and useless. Also most of the content is for under graduate students or very very average students. I wish, author will take my feedback constructively and upgrade content with some better and advanced content. Please look , how to add value to the experience engineer in your course or modifify the couse level to begineer or intermediate. Thank You, Abinash

Vivank9 February 2020

The best course for DSA.The concept clarity is amazing. The course is simple, easy to understand, each topic is in superb depth.

Spandan5 February 2020

One of the best course to clear your concepts in data structures and have a through understanding of it!!

Xiaoyan4 February 2020

I was hoping to dig deeper on those fundamentals and I think this course perfectly deliveries that. Thanks!

Krishna2 February 2020

It is a definitely a YES! There are several things that are not available elsewhere but only in this course.

Sahitya1 February 2020

Abdul makes it simple and easy to understand with examples. Appreciate and a 5 star for his teaching skills.


Expired8/19/201996% OFF


Udemy ID


Course created date


Course Indexed date
Course Submitted by

Android PlayStore
Apple Appstore