Data Structures & Algorithms
I made this repository to post my code and document my progress while Learning Data Structures and Algorithms Concepts
Recommended Books for the Course and Reference Source
-
Introduction to Algorithms, 3rd Edition by thomas h. cormen
-
Introduction to Algorithms, 2rd Edition by thomas h. cormen
-
Data Structures Through C In Depth By. Sk Srivastava
Data Structures AND Algorithms Include
DSA Introduction
Asymptotic Analysis
Asymptotic Notations
Theta Notation (Θ-notation)
Big-O Notation (O-notation)
Omega Notation (Ω-notation)
Master Theorem
Divide and Conquer Algorithm
Arrays Data Structure
A one-dimensional array (or single dimension array)
Two-dimensional Arrays
Multi-dimensional Arrays
Linked List Data Structure
Singly Linked List
Doubly Linked List
Circular linked list
Doubly Circular Linked List
Stack Data Structure
Stack Data Structure Array Implementation
Stack Data Structure linked list Implementation
Infix Prefix & Postfix Expressions in Data Structures
Infix to Postfix Expression using STACK Data Structure
Infix to Prefix Expression using Stack Data Structure
Pretfix to Infix Expression using STACK Data Structure
Postfix to Prefix Expression using STACK Data Structure
Prefix to Postfix Expression using STACK Data Structure
Queue Data Structure
Queue Data Structure Array Implementation (FIFO)
Queue Data Structure linked list Implementation(FIFO)
Queue Data Structure Stack Implementation (FIFO)
Circular Queue Data Structure Array Implementation
Circular Queue Data Structure linkedlist Implementation
Deque (Double Ended Queue)
Double Ended Queue Circular Array Implementation
Priority Queue
A priority Queue Implementation Using A Min-Heap
A priority Queue Implementation Using A Max-Heap
Disjoint Set Union
Path compression Union by Rank
Sorting Algorithms
Bubble Sort Algorithm
Selection Sort Algorithm
Insertion Sort Algorithm
Merge Sort Algorithm
Quicksort Algorithm
Counting Sort Algorithm
Radix Sort Algorithm
Bucket Sort Algorithm
Shell Sort Algorithm
Heap Sort Algorithm
A Min-Heap Sort Algorithm
A Max-Heap Sort Algorithm
Graph Topological Sort
TODO ON (Sorting Algorithms)
Bitonic Sort Cocktail Sort Cycle Sort Gnome Sort LSDRadix Sort Algorithm Postman Sort Tim-sort pigeonhole-sort COMB SORT
Searching Algorithms
Linear Search
Binary Search
Hashing
Direct Address Table
Hash Table and Hash Function Array Implementation
Hash Tables Separate Chaining With Doubly Linked Lists
Hash Table Separate Chaining With Singly Linked Lists
Hash Table with Chaining (Dictionary Speller Checker )
Hash Table Implementation with Linear Probing (Hashing)
Hash Table Implementation with Quadratic Probing
Hash Table Implementation with Double Hashing
TODO ON (Hashing)
Cryptographic Hashing
Tree Based Data Structure(1)
Tree Data Structure
Tree Traversal - inorder, preorder and postorder
Binary Tree
Full Binary Tree
Perfect Binary Tree
Complete Binary Tree
Balanced Binary Tree
Binary Search Tree(BST)
AVL Tree
Tree Based Data Structure(2)
Red-Black Tree
Insertion in a Red-Black Tree
Deletion From a Red-Black Tree
Splay Tree
Insertion in Splay Tree
Deletion From Splay Tree (Top Down Splaying)
Deletion From Splay Tree (Bottom-up Splaying)
B-tree
Insertion into a B-tree(CODE TODO)
Deletion from a B-tree (CODE TODO)
B+ Tree
Insertion on a B+ Tree (CODE TODO)
Insertion on a B+ Tree (CODE TODO)
Graph Based Data Structure
Graph Data Stucture
Graph Adjacency list Representation
Graph Adjacency Matrix Representation
Depth First Search Implementation (DFS Algorithm)
Breadth first Search Implementation (BFS Algorithm)
Spanning Tree and Minimum Spanning Tree
Topological Sorting
Types of edges in DFS | Edge classification
Strongly Connected Components (CODE TODO)
TODO ON (Graph Based Data Structure)
Bellman Ford's Algorithm
Detect Cycle in Directed Graph
Detect Cycle in Undirected Graph
Greedy Algorithms
Kruskal's Algorithm
Prim's Algorithm
TODO ON (Greedy Algorithms)
Ford-Fulkerson Algorithm
Dijkstra's Algorithm
Huffman Coding
Dynamic Programming
Coin Change Problem Number Coin Change Problem: Minimum number of coins Dynamic Programming
TODO ON (Dynamic Programming)
Floyd-Warshall Algorithm
Longest Common Subsequence
Traveling Salesman Problem using Dynamic Programming
0/1 knapsack problem-Dynamic Programming
Fractional Knapsack Problem using Greedy Method
Subset Sum Problem using Dynamic Programming
Algorithms TODO
Backtracking Algorithm
Rabin-Karp Algorithm
Algorithms Specialization Offered By Princeton University on coursera
Algorithms, Part I
https://www.coursera.org/learn/algorithms-part1
Algorithms, Part II
https://www.coursera.org/learn/algorithms-part2
Algorithms Specialization Offered By Stanford University on coursera
https://www.coursera.org/specializations/algorithms
Divide and Conquer, Sorting and Searching, and Randomized Algorithms
https://www.coursera.org/learn/algorithms-divide-conquer
Graph Search, Shortest Paths, and Data Structures
https://www.coursera.org/learn/algorithms-graphs-data-structures
Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming
https://www.coursera.org/learn/algorithms-greedy
Shortest Paths Revisited, NP-Complete Problems and What To Do About Them