Welcome to my Data Structures and Algorithms (DSA) Learning Journey! This repository is a comprehensive collection of my work and understanding as I go through various DSA topics. I created this repo to document and showcase the concepts, implementations, and problem-solving techniques I learn throughout my journey.
This repository covers the following important topics in DSA:
-
Time Complexity: Learn about different time complexities like Constant, Logarithmic, Linear, Quadratic, etc., and how they affect algorithm efficiency.
-
Arrays: Basic and advanced operations on arrays, including 1D and 2D arrays and their manipulation.
-
Strings: Working with strings, including common string manipulation algorithms and libraries.
-
Linked Lists: Covers singly linked lists, doubly linked lists, circular linked lists, and related operations.
-
Stacks: Stack implementation using arrays and linked lists. Includes finite and infinite stacks.
-
Queues: Covers circular queues, linear queues, and priority queues, all implemented using arrays and linked lists.
-
Vectors: Dynamic and static vector implementations, including multidimensional vectors.
-
Recursion: Examples of different types of recursion like tail recursion, non-tail recursion, and indirect recursion.
-
Trees: Binary trees, AVL trees, and Binary Search Trees (BST), along with common operations like traversal and insertion.
-
Graphs: Graph data structure, along with BFS, DFS, and Dijkstra's algorithm for directed and undirected graphs.
-
Hash Maps: Implementation of hash maps using techniques like separate chaining, linear probing, quadratic probing, and double hashing.
-
Sorting Algorithms: Implementations of common sorting algorithms like Bubble Sort, Selection Sort, Quick Sort, Merge Sort, etc.
The repository is organized as follows:
.
├── 1.Complexity-Analysis # Understanding Time & Space Complexity
├── 2.Array # Array implementations and problems
├── 3.Strings # String manipulation techniques
├── 4.Linked-Lists # Linked List implementations
├── 5.Stack # Stack implementations (finite, infinite, etc.)
├── 6.Queue # Queue implementations (linear, circular, priority)
├── 7.Vector # Vector (dynamic/static) implementations
├── 8.Recursion # Recursion concepts and examples
├── 9.Trees # Tree data structures (Binary Tree, BST, AVL, B-Tree, Heap, Trie, etc.)
├── 10.Graphs # Graph algorithms (BFS, DFS, Dijkstra, etc.)
├── 11.Hash-Maps # Hash Map implementations (linear probing, separate chaining, etc.)
├── 12.Bubble-Sort # Bubble sort implementations
├── 13.Selection-Sort # Selection sort implementations
├── 14.Quick-Sort # Quick sort implementations
├── 15.Merge-Sort # Merge sort implementations
└── LICENSE # Repository License
-
Clone this repository to your local machine using:
git clone https://github.com/TheLeopard65/MY-DSA-JOURNEY.git
-
Navigate into the directory you are interested in.
-
Read the
README.md
in each folder for detailed explanations of the concepts and the implementations in each file. -
Run the individual programs to see the algorithms in action.
-
Open the codes in VS-Code/nano/vim or any editor of your choice to learn from the code.
I will be continuously updating this repository as I learn new concepts. If you have any suggestions, improvements, or corrections, feel free to create an issue or submit a pull request.
This Repository is open-source and available under the MIT License. Feel free to use it for your Learning!
Happy Learning! ✨