Data Structure | Subtypes |
---|---|
Arrays | 1D-Array , 2D-Array, Traversals, MaxSubarraySum |
Linked Lists | Singly Linked List, Doubly Linked List, Circular Linked List |
Stacks | Stack Applications ( Parenthesis Checker, Decimal to Binary convertor ) |
Queues | Circular Queue, Priority Queue |
Trees | Binary Trees, Binary Search Trees, AVL Trees, Red-Black Trees |
Heaps | Min Heap, Max Heap |
Hash Tables | |
Graphs | Adjacency Matrix, Adjacency List |
Algorithm Type | Algorithms |
---|---|
Sorting Algorithms | Bubble Sort, Selection Sort, Insertion Sort, Merge Sort, Quick Sort, Heap Sort |
Searching Algorithms | Linear Search, Binary Search |
Graph Algorithms | Depth First Search (DFS), Breadth First Search (BFS), Dijkstra's Algorithm, A* Search |
Dynamic Programming | Fibonacci Sequence, Knapsack Problem, Longest Common Subsequence |
Greedy Algorithms | Coin Change Problem, Activity Selection |
Java is a versatile programming language known for its Object-Oriented Programming (OOP) capabilities, which make it a strong choice for implementing data structures and algorithms.
- Object-Oriented Programming: Java's strong OOP principles make it easier to model complex systems using data structures.
- Rich Standard Library: Java has a comprehensive set of libraries that support data structures and algorithms, reducing the need for custom implementations.
- Portability: Java programs can run on any device that has a Java Virtual Machine (JVM), ensuring wide compatibility.
C is a powerful language that gives you control over system resources, making it ideal for low-level data structure manipulation and algorithm implementation.
- Efficiency: C provides direct access to memory and system resources, enabling highly efficient code.
- Control: With pointers and manual memory management, C allows for fine-tuned control over how data is stored and accessed.
- Speed: Programs written in C often execute faster than those written in higher-level languages due to its minimal runtime overhead.
Python is an accessible and easy-to-learn language, perfect for quickly prototyping and implementing data structures and algorithms.
Note: Python implementations are coming soon!
- Ease of Use: Python's simple and readable syntax makes it a great choice for beginners and for rapid development.
- Rich Libraries: Python boasts an extensive standard library and numerous third-party modules that facilitate the implementation of various data structures and algorithms.
- Flexibility: Python is highly flexible, allowing for quick iterations and prototyping.
To get started with the repository, clone it to your local machine using:
git clone https://github.com/Atharvkote/Data-Structures-Algorithms.git
- Ensure you have JDK installed.
- Navigate to the Java directory and compile the files using
javac
.
- Ensure you have a C compiler installed (e.g., GCC).
- Navigate to the C directory and compile the files using
gcc
.
- Ensure you have Python installed.
- Navigate to the Python directory (coming soon).
For compiling and running a Java file:
cd java/linkedlists
javac SinglyLinkedList.java
java SinglyLinkedList
For compiling and running a C file:
cd c/linkedlists
gcc singly_linked_list.c -o singly_linked_list
./singly_linked_list
cd python
python your_script.py
Refer to the examples
directory in each language folder for usage examples and demonstrations of each data structure and algorithm.
Use JUnit for testing Java implementations.
Use assert.h
for testing C implementations.
Use unittest
for testing Python implementations.
For more detailed documentation, please visit our Documentation pages.
We appreciate all contributions. Please see the Contributors page for a list of all contributors.
To report issues or bugs, please open an issue on our Issues page
For any questions or suggestions, feel free to open an issue or contact us directly.
Thank you for visiting our repository! We hope you find these resources useful for your learning and development.