Welcome to my repository for learning and practicing data structures and algorithms in Python. This repository contains Jupyter notebook exercises covering a wide range of topics in both data structures and search algorithms. Whether you are a beginner looking to strengthen your foundation or an experienced developer aiming to refine your skills, these exercises are designed to cater to various skill levels.
- Array Creation and Manipulation
- Finding the Maximum and Minimum Elements
- Searching in an Array
- Sorting Algorithms (e.g., Bubble Sort, Quick Sort)
- Singly Linked Lists
- Doubly Linked Lists
- Circular Linked Lists
- Operations on Linked Lists (Insertion, Deletion, Traversal)
- Stack Implementation
- Stack Operations (Push, Pop)
- Applications of Stacks (e.g., Expression Evaluation)
- Queue Implementation (Array and Linked List)
- Queue Operations (Enqueue, Dequeue)
- Applications of Queues (e.g., BFS)
- Binary Trees
- Binary Search Trees (BST)
- Tree Traversal (Inorder, Preorder, Postorder)
- Balancing Trees (AVL, Red-Black)
- Graph Representation (Adjacency List, Adjacency Matrix)
- Depth-First Search (DFS) Implementation
- Breadth-First Search (BFS) Implementation
- Hash Function Implementation
- Collision Resolution Strategies (Chaining, Open Addressing)
- Hash Table Operations (Insertion, Deletion, Search)
- Linear Search Implementation
- Time Complexity Analysis
- Binary Search Implementation
- Time Complexity Analysis
- DFS on Graphs
- Applications of DFS
- BFS on Graphs
- Applications of BFS
To get started, clone this repository and open the Jupyter notebooks in the notebooks
directory. Each notebook corresponds to a specific topic, and the exercises are designed to guide you through the implementation and understanding of various data structures and algorithms.
Feel free to explore, learn, and contribute. Happy coding!