Skip to content

DataForge is a comprehensive Java library that offers a wide range of fundamental data structures and algorithms, meticulously implemented for educational purposes, software development, and algorithmic problem-solving. Whether you’re a student, educator, or developer, DataForge serves as a valuable resource to understand computer science concepts.

License

Notifications You must be signed in to change notification settings

receperdog/DataForge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DataForge

DataForge is a comprehensive repository dedicated to implementing well-known data structures from scratch using Java. This project aims to serve as both an educational resource and a reusable library, helping developers and students understand the core concepts and applications of data structures.


✨ Features

  • Handcrafted Implementations: Every data structure is built from scratch, with clear and well-documented code.
  • Modular Design: Each data structure is organized into separate modules for easy exploration and scalability.
  • Wide Range of Data Structures:
    • Linear Structures: Arrays, Linked Lists, Stacks, Queues
    • Non-Linear Structures: Trees, graphs, Heaps
    • Hashing: HashMaps, HashSets
    • Specialized Structures: Tries, Disjoint Sets (Union-Find), Priority Queues
  • Algorithms: Includes common algorithms associated with each data structure (e.g., traversals, searches, shortest paths, sorting).

🎯 Goals

  1. Educational Resource: Provide developers with a clear and concise guide to understanding how data structures work at their core.
  2. Reusable Library: Offer a modular library that can be used in real-world applications or personal projects.
  3. Progressive Coverage: Start with fundamental structures and gradually include advanced, specialized structures.

📂 Repository Structure

The repository is organized into modules, each focusing on a specific data structure or category. Here's a sample structure:

Top-Level Structure

  • datastructures/ - Contains implementations of various data structures.
  • algorithms/ - Includes standalone algorithms (e.g., sorting, searching, graph algorithms, etc.).
  • utils/ - Utility classes for helper functions, benchmarking, and other reusable code.
  • tests/ - JUnit test cases for validating data structures and algorithms.
  • README.md - Documentation for the repository.
  • LICENSE - Licensing information.
  • CONTRIBUTING.md - Guidelines for contributors.

Detailed Structure

DataForge

  • datastructures/

    • arrays/
      • DynamicArray.java
      • StaticArray.java
    • linkedlists/
      • SinglyLinkedList.java
      • DoublyLinkedList.java
      • CircularLinkedList.java
    • stacks/
      • StackArray.java
      • StackLinkedList.java
    • queues/
      • QueueArray.java
      • QueueLinkedList.java
      • CircularQueue.java
    • trees/
      • BinaryTree.java
      • BinarySearchTree.java
      • AVLTree.java
      • RedBlackTree.java
      • Heap.java
    • graphs/
      • GraphAdjacencyList.java
      • GraphAdjacencyMatrix.java
      • DirectedGraph.java
      • UndirectedGraph.java
    • hashing/
      • HashMap.java
      • HashSet.java
    • tries/
      • Trie.java
    • disjointsets/
      • UnionFind.java
    • priorityqueues/
      • PriorityQueue.java
    • specialized/
      • FenwickTree.java
      • SegmentTree.java
      • SuffixArray.java
      • LRUCache.java
  • algorithms/

    • sorting/
      • MergeSort.java
      • QuickSort.java
      • BubbleSort.java
      • HeapSort.java
      • InsertionSort.java
    • searching/
      • BinarySearch.java
      • LinearSearch.java
    • graph/
      • BFS.java
      • DFS.java
      • Dijkstra.java
      • Kruskal.java
      • Prim.java
      • BellmanFord.java
    • dynamicprogramming/
      • Knapsack.java
      • LongestCommonSubsequence.java
      • LongestIncreasingSubsequence.java
      • Fibonacci.java
      • MatrixChainMultiplication.java
    • divideandconquer/
      • MergeSort.java
      • QuickSort.java
    • backtracking/
      • NQueens.java
      • RatInMaze.java
      • SudokuSolver.java
    • greedy/
      • ActivitySelection.java
      • HuffmanEncoding.java
      • FractionalKnapsack.java
  • utils/

    • HelperFunctions.java
    • InputGenerator.java
    • PerformanceTests.java
  • tests/

    • datastructures/
      • ArrayTests.java
      • LinkedListTests.java
      • TreeTests.java
      • GraphTests.java
      • HashingTests.java
      • TrieTests.java
    • algorithms/
      • SortingTests.java
      • GraphAlgorithmTests.java
      • DynamicProgrammingTests.java
      • BacktrackingTests.java
  • README.md

  • LICENSE

  • CONTRIBUTING.md


🚀 Future Roadmap

  • Add performance benchmarks for all implemented data structures.
  • Integrate real-world examples showcasing the practical applications of each structure.
  • Write comprehensive JUnit test cases for every implementation.
  • Expand the library to include advanced data structures (e.g., Segment Trees, Fenwick Trees).
  • Enhance documentation with detailed explanations, diagrams, and use cases.

🛠️ Tech Stack

  • Language: Java
  • Build Tool: Gradle/Maven (to be decided)
  • Testing Framework: JUnit

👥 Contributions

Contributions are welcome! Whether you want to:

  • Fix bugs
  • Optimize code
  • Suggest new features
  • Implement additional data structures

Feel free to open issues or submit a pull request. Please ensure your contributions are well-documented and include test cases wherever applicable.


📜 License

This project is open-source and available under the MIT License.


🙌 Acknowledgements

  • Inspired by the need for an easy-to-understand, handcrafted implementation of data structures.
  • Special thanks to the open-source community for their constant support.

Let’s build DataForge into a powerful and educational library for all things data structures!

About

DataForge is a comprehensive Java library that offers a wide range of fundamental data structures and algorithms, meticulously implemented for educational purposes, software development, and algorithmic problem-solving. Whether you’re a student, educator, or developer, DataForge serves as a valuable resource to understand computer science concepts.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages