https://github.com/abdullahmaqbool22/data-structures-and-algorithm
All the concepts you need to master Data Structures and Algorithm through C++.
https://github.com/abdullahmaqbool22/data-structures-and-algorithm
cplusplus-17
Last synced: 5 days ago
JSON representation
All the concepts you need to master Data Structures and Algorithm through C++.
- Host: GitHub
- URL: https://github.com/abdullahmaqbool22/data-structures-and-algorithm
- Owner: AbdullahMaqbool22
- License: apache-2.0
- Created: 2023-10-21T09:53:36.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2023-11-09T06:30:17.000Z (about 2 years ago)
- Last Synced: 2024-12-29T20:48:15.798Z (about 1 year ago)
- Topics: cplusplus-17
- Language: C++
- Homepage:
- Size: 395 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Data Structures and Algorithms in C++
This repository contains implementations of various data structures and algorithms in C++. It is intended as a learning resource for those who want to deepen their understanding of fundamental computer science concepts.
## Table of Contents
1. [Introduction](#introduction)
2. [Data Structures](#data-structures)
- [1. Array](#array)
- [2. Linked List](#linked-list)
- [3. Stack](#stack)
- [4. Queue](#queue)
- [5. Tree](#tree)
- [6. Graph](#graph)
- [7. Hash Table](#hash-table)
- [8. Heap](#heap)
- [9. Trie](#trie)
- [10. Disjoint Set (Union-Find)](#disjoint-set)
- [11. Bloom Filter](#bloom-filter)
3. [Algorithms](#algorithms)
- [1. Sorting](#sorting)
- [2. Searching](#searching)
- [3. Recursion](#recursion)
- [4. Dynamic Programming](#dynamic-programming)
- [5. Greedy Algorithms](#greedy-algorithms)
- [6. Divide and Conquer](#divide-and-conquer)
- [7. Backtracking](#backtracking)
- [8. Graph Algorithms](#graph-algorithms)
- [9. String Algorithms](#string-algorithms)
- [10. Bit Manipulation](#bit-manipulation)
4. [Usage](#usage)
5. [Contributing](#contributing)
6. [License](#license)
## Introduction
This repository aims to provide clear and concise implementations of common data structures and algorithms using C++. Understanding these fundamental concepts is crucial for any programmer looking to solve complex problems efficiently.
## Data Structures
### 1. Array
An array is a collection of elements, each identified by an index or a key. It is one of the simplest and most widely used data structures.
### 2. Linked List
A linked list is a linear data structure where elements are stored in nodes. Each node points to the next node in the sequence.
### 3. Stack
A stack is a data structure that follows the Last In, First Out (LIFO) principle. Elements are added and removed from the same end, known as the top.
### 4. Queue
A queue is a data structure that follows the First In, First Out (FIFO) principle. Elements are added to the rear and removed from the front.
### 5. Tree
A tree is a hierarchical data structure with a root element and subtrees of children. Each child itself is a tree.
### 6. Graph
A graph is a collection of nodes connected by edges. It can be either directed or undirected.
### 7. Hash Table
A hash table is a data structure that maps keys to values. It uses a hash function to compute an index into an array.
### 8. Heap
A heap is a specialized tree-based data structure that satisfies the heap property.
### 9. Trie
A trie is a tree-like data structure used to store a dynamic set of strings.
### 10. Disjoint Set (Union-Find)
A disjoint-set data structure is a collection of non-overlapping sets. It is useful for solving problems related to connectivity.
### 11. Bloom Filter
A Bloom filter is a probabilistic data structure used to test whether an element is a member of a set.
## Algorithms
### 1. Sorting
Sorting algorithms arrange data in a particular order. Common sorting algorithms include Bubble Sort, Insertion Sort, Merge Sort, Quick Sort, etc.
### 2. Searching
Searching algorithms are designed to find specific items within a data structure. Common searching algorithms include Linear Search, Binary Search, etc.
### 3. Recursion
Recursion involves solving a problem by breaking it down into smaller, similar subproblems.
### 4. Dynamic Programming
Dynamic programming involves solving complex problems by breaking them down into simpler overlapping subproblems.
### 5. Greedy Algorithms
Greedy algorithms make locally optimal choices at each stage to achieve a globally optimal solution.
### 6. Divide and Conquer
Divide and Conquer is a problem-solving paradigm that involves breaking a problem into subproblems, solving them, and combining their solutions.
### 7. Backtracking
Backtracking is a technique for solving problems recursively by trying out different possibilities and undoing choices when they lead to a dead end.
### 8. Graph Algorithms
Graph algorithms operate on graphs to solve various problems, such as finding the shortest path or detecting cycles.
### 9. String Algorithms
String algorithms involve operations on strings, such as pattern matching, substring search, etc.
### 10. Bit Manipulation
Bit manipulation involves operations at the bit-level, which can be used for tasks like bitwise operations and bitmasking.
## Usage
To use any of the data structures or algorithms provided in this repository, simply navigate to the corresponding directory and include the necessary header files in your C++ code.
## Contributions
Contributions to the project are welcome. You can fork the repository, make changes, and submit a pull request with your improvements.
## License
This project is licensed under the ownership of Abdullah Maqbool
## Contact
For any inquiries or support, please contact Abdullah at abdullahmaqbool08@gmail.com.
---