# Data Structures with C/C++ Programming

• Introduction (1h)
• Course overview
• What is DS and Algorithms
• Where it is using
• Types of DS
• Recursion (2h)
• What is recursion
• Why to learn recursion
• Format of recursion methods
• how recursion actually works
• Finding factorial using recursion (code & demo)
• Finding Fibonacci using recursion (code & demo)
• Recursion vs Iteration
• When to use & avoid recursion
• Practical uses of recursion
• Algorithm runtime analisys (1.5h)
• Overview
• What are notations
• Examples of notations
• Examples of time complexity
• Finding time complexity of iterative algorithm
• Finding time complexity of recursive algorithm1
• Finding time complexity of recursive algorithm2
• Arrays (2.5h)
• Overview
• Types of arrays
• How is array represented in memory
• Create an array
• Insert, travers in 1D array
• Access, search and delete in 1D array
• Code 1D array
• Time complexity of 1D array
• Create 2D array
• 2D array operations
• Time complexity of 2D arrays
• When to use 2D arrays
• Code 2D arrays
• Practical uses of 2D arrays
• What is a linked list
• Why so many types of linked list
• how to sort linked in in-memory
• Create a singly linked list (SLL)
• Insertion in SLL – (Dry run)
• Insertion in SLL Algorithm
• Traversal SLL
• Search a node in SLL
• Deletion of a node from SLL – (dry run)
• Deletion of node from SLL algorithm
• Delete entire SLL
• Time complexity of SLL
• Creation of circular singly linked list
• insertion of data in CSLL — Dry run
• insertion of data in CSLL — Algorithm
• Traverse CSLL
• Search a node in CSLL
• Delete a node in CSLL — Dry run
• Delete a node in CSLL — Algorithm
• Time complexity of CSLL
• Creating doubly linked list (DLL)
• Insert a node in DLL — Dry run
• Insert a node in DLL — Algorithm
• Traverse DLL
• Reverse traversal of DLL
• Search a node in DLL
• Delete a node from DLL — Dry run
• Delete a node from DLL — Algorithm
• Delete entire DLL
• Time complexity of DLL
• Create a doubly circular linked list (CDLL)
• Insert a node in CDLL — Dry run
• Insert a node in CDLL — Algorithm
• Traverse CDLL
• Reverse traverse CDLL
• search a node in CDLL
• Delete a node from CDLL — Dry run
• Delete a node from CDLL — Algorithm
• Delete entire CDLL
• Time complexity of CDLL
• SLL vs CSLL vs DLL vs CDLL
• Practical uses of linked lists
• Stacks (1.5h)
• Overview
• Create using arrays
• Create
• push, pop
• peek, isEmpty, isFull, delete
• Create, push, pop
• peek, delete
• When to use or avoid stacks
• Queues (1.5h)
• Overview
• Linear Queue using arrays
• Create, enqueue
• dequeue, isEmpty, full, delete
• Circular queue using arrays
• Enqueue, dequeue
• peek, isEmpty, isFull, delete
• Linear queue using LL
• create, enqueue
• dequeue, isEmpty, isFull, delete
• Binary tree (2h)
• Overview
• Terminology
• Types of binary trees
• Create empty binary tree
• Pre-order traversal
• In-order traversal
• post-order traversal
• level-order traversal
• search for a value in binary tree
• insert a value in binary tree
• delete a value from binary tree
• delete binary tree
• Binary search tree (1h)
• Overview
• Creating and searching in BST
• Traversing a BST
• Inserting a node in BST
• Deleting a node from BST
• Deleting a BST
• AVL Tree (2h)
• Overview
• Create search traverse AVL tree
• Insert in AVL LL Theory
• Insert in AVL LL Algorithm
• Insert in AVL LR
• Insert in AVL RR
• Insert in AVL RL
• Insert end to end cases
• Delete LL LR RR RL
• Delete end to end cases
• Delete AVL tree and tree comparison
• Binary Heap (1h)
• Overview
• Create, peek, size of heap
• insert an element in a heap
• extract and delete from a heap
• Tries (1h)
• Overview
• create and insert in a trie
• search for a string in a trie
• delete a string from trie
• practical uses of a trie
• Graphs (2h)
• Overview
• Types of graphs
• Representation
• Sparse matrix