Data Structures with C/C++ Programming

  • Introduction (1h)
    • Course overview
    • What is DS and Algorithms
    • Why companies ask DS
    • 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
  • Linked lists (5h)
    • What is a linked list
    • Linked list vs arrays
    • Components of linked lists
    • types of 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 using LinkedList
      • 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
    • Arrays vs LinkedList implementation
  • 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
      • Adjecancy list
    • Traversal
      • BFS
      • DFS
    • BFS vs DFS
    • Conclusions of graph
  • Conclusion
    • Importance of Data Structures
    • Interview directions.