Data Structure through C

- Functions
- Pointers
- Declaring Pointer Variables
- Pointer Expressions and Pointer Arithmetic
- Null Pointers
- Pointer to Pointers

- 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)

- 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

- 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

- 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

- 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

- Introduction to Queues
- Array Representation of Queues
- Linked Representation of Queues
- Types of Queues
- Circular Queues
- Deques
- Priority Queues
- Multiple Queues
- Applications of Queues

- 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

- 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

- 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

- Binary Heaps
- Inserting a New Element in a Binary Heap
- Deleting an Element from a Binary Heap
- Applications of Binary Heaps

- 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

- 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

- 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

Hours: 50 Hours

Intermediate

Course Fee: 3500

2 Free Demo Classes

Free Course Material

Completion Certificate

Lifetime Membership