Welcome to the Data Structure and Algorithm repository! This repository is dedicated to providing solutions and implementations of various data structures and algorithms commonly used in computer science and programming interviews. Whether you're preparing for technical interviews or simply interested in enhancing your understanding of fundamental concepts, this repository aims to be a valuable resource for you. I also add the solution of Daily leetcode problem of the day solution here.
- Arrays: Implementation and manipulation of arrays.
- Linked Lists: Singly linked lists, doubly linked lists, and circular linked lists.
- Stacks: Implementation and applications of stacks.
- Queues: Implementation and applications of queues.
- Trees: Binary trees, binary search trees, AVL trees, etc.
- Graphs: Graph representation and traversal algorithms.
- Sorting Algorithms: Bubble sort, selection sort, insertion sort, merge sort, quick sort, etc.
- Searching Algorithms: Linear search, binary search, depth-first search (DFS), breadth-first search (BFS), etc.
- Dynamic Programming: Introduction to dynamic programming and various problems solved using dynamic programming techniques.
- Greedy Algorithms: Introduction to greedy algorithms and problems solved using greedy strategies.
- Graph Algorithms: Shortest path algorithms, minimum spanning tree algorithms, etc.
- String Algorithms: String manipulation algorithms and pattern matching algorithms.
Each data structure and algorithm is implemented C++.
Folder Structure: The implementations are organized into folders based on the type of data structure or algorithm. For example, implementations related to arrays can be found in the Arrays folder, while sorting algorithms are located in the Sorting folder.
Language: Implementations are provided in C++.
Contributions to this repository are highly encouraged! If you have additional implementations, optimizations, or corrections to existing code, please feel free to contribute.
- Fork this repository.
- Create a new branch (git checkout -b feature/add-new-implementation).
- Add your implementation file to the appropriate folder.
- Ensure that your code follows the repository's coding style and conventions.
- Test your implementation thoroughly.
- Update the README.md file if necessary to include information about your contribution.
- Commit your changes (git commit -am 'Add new implementation of data structure X').
- Push to the branch (git push origin feature/add-new-implementation).
- Create a new Pull Request.
Please note that while efforts are made to ensure the accuracy and efficiency of the implementations provided in this repository, they may not always be the most optimal or efficient solutions. They are intended for educational purposes and as a reference for understanding fundamental concepts. It's important to analyze and understand the underlying principles before applying them in real-world scenarios.
Happy coding!