Data Structure and Algorithm

About DSA Language

No matter which programming language you program in, if you want to be able to build scalable systems, it is important to learn data structures and algorithms.

Why this course is required

If we want our computer system to do something then we need to give it an algorithm. An algorithm is basically a step by step procedure which is used to solve a problem. At first it may sound you a very difficult term but actually, it is something very important and easy. In order to get a job done by the computer system, you have to explain it about the procedure on how to do it.” This part is essentially known as Algorithm.”

Pre-requisites for DSA Programming

Next Course Recommended

Course Contents

  1. Introduction to C
    • Functions
    • Pointers
    • Declaring Pointer Variables
    • Pointer Expressions and Pointer Arithmetic
    • Null Pointers
    • Pointer to Pointers
  2. Introduction to Data Structures and Algorithms
    • Elementary Data Structure Organization
    • Classification of Data Structures
    • Operations on Data Structures
    • Abstract Data Type
    • Time and Space Complexity
    • Worst-case, Average-case, Best-case
    • Big O Notation
    • mega Notation (Ω)
    • Theta Notation (Q)
  3. Arrays
    • Calculating the Address of Array Elements
    • Operations on Arrays
    • Passing Arrays to Functions
    • Pointers and Arrays
    • Arrays of Pointers
    • Two-dimensional Arrays
    • Passing Two-dimensional Arrays to Functions
    • Pointers and Three-dimensional Arrays
    • Sparse Matrices
  4. Structures and Unions
    • Structure Declaration
    • Typedef Declarations
    • Initialization of Structures
    • Accessing the Members of a Structure
    • Copying and Comparing Structures
    • Nested Structures
    • Arrays of Structures
    • Structures and Functions
    • Self-referential Structures
    • Declaring a Union
    • Arrays of Union Variables
    • Unions Inside Structures
  5. Linked Lists
    • Linked Lists versus Arrays
    • Memory Allocation and De-allocation for a Linked List
    • Singly Linked Lists
    • Traversing a Linked List
    • Searching for a Value in a Linked List
    • Inserting a New Node in a Linked List
    • Deleting a Node from a Linked List
    • Circular Linked Lists
    • Doubly Linked Lists
    • Circular Doubly Linked Lists
    • Header Linked Lists
    • Applications of Linked Lists
    • Polynomial Representation
  6. Stack
    • Introduction to Stacks
    • Array Representation of Stacks
    • Operations on a Stack
    • Push Operation
    • Pop Operation
    • Peek Operation
    • Linked Representation of Stacks
    • Operations on a Linked Stack
    • Push Operation
    • Pop Operation
    • Multiple Stacks
    • Applications of Stacks
    • Reversing a List
    • Implementing Parentheses Checker
    • valuation of Arithmetic Expressions
    • Recursion
  7. Queues
    • Introduction to Queues
    • Array Representation of Queues
    • Linked Representation of Queues
    • Types of Queues
    • Circular Queues
    • Deques
    • Priority Queues
    • Multiple Queues
    • Applications of Queues
  8. Trees
    • Introduction
    • Basic Terminology
    • Types of Trees
    • General Trees
    • Forests
    • Binary Trees
    • Binary Search Trees
    • Expression Trees
    • Tournament Trees
    • Creating a Binary Tree from a General Tree
    • Traversing a Binary Tree
    • Pre-order Traversal
    • In-order Traversal
    • Post-order Traversal
    • Level-order Traversal
    • Constructing a Binary Tree from Traversal Results
    • Huffman’s Tree
    • Applications of Trees
  9. Efficient Binary Trees
    • Binary Search Trees
    • Operations on Binary Search Trees
    • Searching for a Node in a Binary Search Tree
    • Inserting a New Node in a Binary Search Tree
    • Deleting a Node from a Binary Search Tree
    • Determining the Height of a Binary Search Tree
    • Determining the Number of Nodes
    • Finding the Mirror Image of a Binary Search Tree
    • Finding the Smallest Node in a Binary Search Tree
    • Finding the Largest Node in a Binary Search Tree
    • Threaded Binary Trees
    • Traversing a Threaded Binary Tree
    • AVL Trees
    • Operations on AVL Trees
    • Searching for a Node in an AVL Tree
    • Red-Black Trees
    • Properties of Red-Black Trees
    • Operations on Red-Black Trees
    • Applications of Red-Black Trees
    • Splay Trees
    • Operations on Splay Trees
    • Advantages and Disadvantages of Splay Trees
  10. Multi-way Search Trees
    • Introduction to M-Way Search Trees
    • B Trees
    • Searching for an Element in a B Tree
    • Inserting a New Element in a B Tree
    • Deleting an Element from a B Tree
    • Applications of B Trees
    • B+ Trees
    • Inserting a New Element in a B+ Tree
    • Deleting an Element from a B+ Tree
    • 2-3 Trees
    • Searching for an Element in a 2-3 Tree
    • Inserting a New Element in a 2-3 Tree
    • Deleting an Element from a 2-3 Tree
  11. Heap
    • Binary Heaps
    • Inserting a New Element in a Binary Heap
    • Deleting an Element from a Binary Heap
    • Applications of Binary Heaps
  12. Graph
    • Introduction
    • Graph Terminology
    • Directed Graphs
    • Terminology of a Directed Graph
    • Transitive Closure of a Directed Graph
    • Bi-connected Components
    • Representation of Graphs
    • Adjacency Matrix Representation
    • Adjacency List Representation
    • Adjacency Multi-List Representation
    • Graph Traversal Algorithms
    • Breadth-First Search Algorithm
    • Depth-first Search Algorithm
    • Topological Sorting
    • Shortest Path Algorithms
    • Minimum Spanning Trees
    • Prim’s Algorithm
    • Kruskal’s Algorithm
    • Dijkstra’s Algorithm
    • Warshall’s Algorithm
    • Modified Warshall’s Algorithm
    • Applications of Graphs
  13. Searching and Sorting
    • Introduction to Searching
    • Linear Search
    • Binary Search
    • Interpolation Search
    • Jump Search
    • Introduction to Sorting
    • Sorting on Multiple Keys
    • Practical Considerations for Internal Sorting
    • Bubble Sort
    • Insertion Sort
    • Selection Sort
    • Merge Sort
    • Quick Sort
    • Radix Sort
    • Heap Sort
    • Shell Sort
    • Tree Sort
    • Comparison of Sorting Algorithms
    • External Sorting
  14. Hashing and Collision
    • Introduction
    • Hash Tables
    • Hash Functions
    • Different Hash Functions
    • Division Method
    • Multiplication Method
    • Mid-Square Method
    • Folding Method
    • Collisions
    • Collision Resolution by Open Addressing
    • Collision Resolution By Chaining
    • Pros and Cons of Hashing
    • Applications of Hashing