This repo is a comprehensive developer tool that provides an interactive and modular environment for exploring core data structures and algorithms. Designed for both educational and practical purposes, it offers seamless navigation across various topics like linked lists, stacks, queues, hashing, and sorting, all within a cohesive architecture.
This project streamlines the process of understanding and implementing complex data structures. The core features include:
- 🎯 🔧 Program API: Centralized interface for executing and managing multiple algorithm modules.
- 🚀 🧩 Modular Design: Extensible architecture with clear interfaces supporting easy customization.
- 📊 🖥️ Interactive Demos: Hands-on demonstrations of data structures and algorithms for practical learning.
- 🔍 🧭 Visual Architecture: ER diagrams and data flow visuals to simplify system comprehension.
- 🛠️ 🔒 Robust Utility Functions: Ensures reliable user input handling and program stability.
- 🎓 📚 Educational Focus: Facilitates deep understanding through practical, interactive exploration.
| Component | Details | |
|---|---|---|
| ⚙️ | Architecture |
|
| 🔩 | Code Quality |
|
| 📄 | Documentation |
|
| 🔌 | Integrations |
|
| 🧩 | Modularity |
|
| 🧪 | Testing |
|
| ⚡️ | Performance |
|
| 🛡️ | Security |
|
| 📦 | Dependencies |
|
| 🚀 | Scalability |
|
└── struktur-data-dan-algoritma/
├── Custom Utility Files
│ ├── customUtility.cpp
│ └── customUtility.hpp
├── Hash Chapter Files
│ ├── hashChapter.hpp
│ ├── hashSixFour.cpp
│ ├── hashSixOne.cpp
│ ├── hashSixThree.cpp
│ └── hashSixTwo.cpp
├── Linked List Chapter Files
│ ├── declaration.hpp
│ ├── implementations.hpp
│ ├── linkedListChapter.hpp
│ ├── linkedListFiveFive.cpp
│ ├── linkedListFiveFour.cpp
│ ├── linkedListFiveOne.cpp
│ ├── linkedListFiveSix.cpp
│ ├── linkedListFiveThree.cpp
│ ├── linkedListFiveTwo.cpp
│ ├── linkedListFour.cpp
│ ├── linkedListThreeFive.cpp
│ ├── linkedListThreeFour.cpp
│ ├── linkedListThreeOne.cpp
│ ├── linkedListThreeSix.cpp
│ ├── linkedListThreeThree.cpp
│ ├── linkedListThreeTwo.cpp
│ ├── linkedListTwoFour.cpp
│ └── linkedlist.hpp
├── Program Interface Files
│ ├── programInterface.cpp
│ └── programInterface.hpp
├── Queue Chapter Files
│ ├── queueChapter.hpp
│ ├── queueTwoFour.cpp
│ ├── queueTwoOne.cpp
│ ├── queueTwoThree.cpp
│ └── queueTwoTwo.cpp
├── README.md
├── Sort Chapter (Advanced) Files
│ ├── advancedSortChapter.hpp
│ ├── sortFiveFour.cpp
│ ├── sortFiveOne.cpp
│ ├── sortFiveThree.cpp
│ └── sortFiveTwo.cpp
├── Sort Chapter Files
│ ├── sortChapter.hpp
│ ├── sortFourFour.cpp
│ ├── sortFourOne.cpp
│ ├── sortFourThree.cpp
│ └── sortFourTwo.cpp
├── Stack Chapter Files
│ ├── stackChapter.hpp
│ ├── stackOneFour.cpp
│ ├── stackOneOne.cpp
│ ├── stackOneThree.cpp
│ └── stackOneTwo.cpp
├── linkedListMain.cpp
├── photoArtboard.jpg
└── taskCompilation.cppSTRUKTUR-DATA-DAN-ALGORITMA/
__root__
⦿ __root__
File Name Summary taskCompilation.cpp - Provides a centralized API to navigate and execute subprograms across multiple data structure and algorithm chapters
- Facilitates user-driven selection of specific topics, manages program flow, and ensures proper memory handling
- Acts as the architectural backbone, enabling seamless exploration of various data structures like stacks, queues, linked lists, sorting algorithms, and hashing within the broader project.linkedListMain.cpp - Provides a menu-driven interface to demonstrate various linked list applications, including string reversal, stack, queue, ordered data input, doubly linked list, postfix processing, and key-value lists
- Serves as the central entry point for exploring and testing different linked list-based data structures and algorithms within the project, facilitating educational and practical understanding of linked list implementations.README.md - Provides an overview of the projects architecture through an Entity-Relationship Diagram and Standard Data flow, illustrating how core components interact and data moves within the system
- Serves as a visual reference to understand the overall structure, relationships, and data pathways, facilitating comprehension of the applications design and aiding in development, troubleshooting, and onboarding efforts.
Program Interface Files
⦿ Program Interface Files
File Name Summary programInterface.hpp - Defines a base interface for managing and navigating various subprograms across different chapters, facilitating modular execution within the project
- It enables seamless selection and execution of specific subprograms through polymorphic methods, serving as a foundational component that abstracts program functionalities and supports extensibility across the entire codebase architecture.programInterface.cpp - Provides user interaction for navigating and selecting subprograms within various chapters of a data structures and algorithms curriculum
- Facilitates displaying available tasks, handling user input, and executing selected programs, thereby integrating instructional content with interactive functionality across the project’s modular architecture
- Ensures seamless user experience in exploring different algorithmic concepts and implementations.
Hash Chapter Files
⦿ Hash Chapter Files
File Name Summary hashSixTwo.cpp - Implements open addressing hash table operations for managing data entries, including insertion, viewing, searching, and deletion
- Facilitates user interaction through a menu-driven interface, enabling dynamic data manipulation and comprehensive control over hash table contents within the broader system architecture
- Supports efficient collision handling and data organization aligned with project objectives.hashChapter.hpp - Defines interfaces for various hash-based data structures and search algorithms within the project
- Facilitates data manipulation, collision handling, and search operations using linear, binary, chaining, and bucket methods
- Serves as a core component for implementing and managing different hashing techniques, ensuring modularity and extensibility in the overall architecture.hashSixFour.cpp - Implements a user-interactive hash table utilizing bucket addressing for collision handling
- Facilitates core operations such as data insertion, viewing, searching, and bulk deletion within a menu-driven interface
- Supports dynamic table sizing and ensures robust error handling, enabling efficient management and manipulation of hashed data in the broader system architecture.hashSixOne.cpp - Implements user interface and core functionalities for managing a dataset through insertion, viewing, searching, and deletion
- Facilitates interaction via menu-driven commands, ensuring data is maintained in an ordered structure and providing error handling
- Serves as the central component for data manipulation within the overall architecture, enabling seamless user-driven data operations and program flow control.hashSixThree.cpp - Implements a hash table with chaining collision handling, facilitating data insertion, viewing, searching, and deletion through a user-interactive menu
- It orchestrates core operations for managing key-value pairs within a dynamic hash structure, supporting efficient data organization and manipulation in the broader system architecture
- The module ensures seamless user engagement and robust data handling within the hashing-based data management framework.
Sort Chapter (Advanced) Files
⦿ Sort Chapter (Advanced) Files
File Name Summary sortFiveOne.cpp - Implements an interactive module for managing and sorting data using in-place sorting techniques
- Supports data entry, preview, sorting in ascending or descending order for integers and strings, and data deletion
- Facilitates user-driven data manipulation within a structured menu interface, enabling efficient organization and retrieval of datasets in a flexible, user-friendly manner.sortFiveFour.cpp - Implements user interface and data manipulation functions for sorting operations within an advanced data management system
- Facilitates data input, preview, sorting using quicksort, and deletion for both integers and strings
- Serves as the core interaction layer, enabling users to perform sorting tasks and manage datasets effectively, integrating with the overall architecture that emphasizes flexible, user-driven data processing workflows.sortFiveThree.cpp - Implements user interface and core functionalities for managing and sorting data collections using Shell Sort
- Facilitates data input, preview, sorting in ascending or descending order for integers and strings, and data deletion
- Serves as the central component for user interaction and data manipulation within the overall architecture, enabling efficient data organization and control.advancedSortChapter.hpp - The advancedSortChapter.hppfile serves as the central interface for the Advanced Sorting chapter within the project
- It defines classes that encapsulate specialized sorting functionalities, primarily focusing on in-place sorting algorithms
- These classes organize and manage data manipulation activities, providing structured methods to perform complex data sorting tasks essential for the chapters advanced sorting operations
- Overall, this file acts as a blueprint for implementing and integrating sophisticated sorting techniques into the broader codebase architecture.sortFiveTwo.cpp - Implements user interface and data manipulation functions for advanced data sorting using Shell Sort
- Facilitates data entry, preview, sorting in ascending or descending order for integers and strings, and data deletion
- Serves as the core interaction layer, enabling dynamic data management and sorting operations within the overall architecture focused on efficient, user-driven data processing.
Queue Chapter Files
⦿ Queue Chapter Files
File Name Summary queueTwoThree.cpp - Implements a dynamic queue structure with alphabetically ordered insertion, data removal, and display functionalities
- Facilitates user interaction through a menu-driven interface, enabling efficient management of string data within the queue
- Supports core operations such as adding, removing, and viewing data, integrating error handling and user prompts to ensure robust data manipulation aligned with the overall system architecture.queueTwoFour.cpp - Implements a linked list-based queue system for managing, manipulating, and searching data entries through a user-interactive menu
- Facilitates adding, removing, displaying, and locating data items by their names or codes, supporting dynamic data management within the overall application architecture
- Enhances data organization and user control in the project’s data processing module.queueTwoTwo.cpp - Implements a queue data structure with limited capacity, enabling users to set capacity, insert data in alphabetical order, remove specific entries, and display current queue contents
- Facilitates interactive management of queued data through a menu-driven interface, supporting efficient data manipulation and visualization within the overall system architecture.queueTwoOne.cpp - Implements a queue data structure with limited capacity, enabling users to set capacity, add data, and clear stored items through an interactive menu
- Facilitates efficient management of queued data, supporting dynamic operations while ensuring proper memory handling
- Serves as the core component for managing sequential data processing within the broader system architecture.queueChapter.hpp - Defines interfaces for various queue implementations and related data management functionalities within the Queue chapter
- Facilitates data operations such as insertion, deletion, display, and search, supporting different data structures like arrays, vectors, and linked lists
- Serves as a foundational component enabling modular, flexible queue-based activities aligned with the overall system architecture.
Linked List Chapter Files
⦿ Linked List Chapter Files
File Name Summary linkedListFiveThree.cpp - Implements an interactive queue demonstration within the linked list chapter, showcasing fundamental queue operations such as enqueue and dequeue
- Facilitates user engagement by simulating a real-world queue management scenario, emphasizing the practical application of queue data structures in managing ordered collections of data
- Serves as an educational tool to illustrate queue behavior and usage.linkedListThreeFour.cpp - Implements an ordered linked list to manage string data efficiently, enabling insertion, retrieval, and deletion of elements while maintaining sorted order
- Facilitates interactive demonstration of list operations, showcasing dynamic data management within a structured architecture
- Serves as a core component for understanding linked list behavior and data organization in the broader project.linkedListFiveOne.cpp - Implements string reversal functionality within the larger linked list architecture, enabling efficient character manipulation
- Facilitates user interaction for inputting multiple lines, then reverses each line by leveraging linked list operations
- Serves as an educational demonstration of combining data structures with string processing, illustrating how linked lists can be used to reverse text in a modular, reusable manner within the project.linkedListThreeTwo.cpp - Implements linked list-based stack operations to facilitate user interaction for stack management
- Provides functionality for creating, displaying, adding, and removing elements within a fixed-size stack, enabling demonstration of stack behavior through a command-line interface
- Serves as a core component for understanding linked list structures and stack implementation within the broader project architecture.linkedListFiveFour.cpp - Implements an interactive demonstration of an ordered linked list, enabling users to add, retrieve, and remove string elements dynamically
- It showcases core list operations within a structured architecture, illustrating how ordered data management integrates into the broader codebase
- This module serves as both a functional example and a testing interface for the linked list implementation.linkedListTwoFour.cpp - Implements a linked list-based key-value data structure optimized for search, insertion, and deletion operations
- Facilitates user interaction through a menu-driven interface for managing data entries, including adding, retrieving, displaying, and removing key-value pairs
- Serves as a core component for data management within the larger project architecture, emphasizing efficient data lookup and manipulation.declaration.hpp - Defines the interface for various linked list operations and demonstrations within the project, facilitating exploration of linked list functionalities such as reversal, stacking, queuing, ordered lists, key-value pairing, and postfix processing
- Serves as a central access point for executing and showcasing linked list-based algorithms and data structures, integrating multiple implementations and problem-specific demos across the codebase.linkedListFiveFive.cpp - Implements an interactive demonstration of a doubly linked list, enabling users to add, remove, and traverse elements in both forward and reverse directions
- It serves as an educational tool within the larger linked list architecture, showcasing core list operations and traversal methods through a user-friendly console interface.linkedListFiveSix.cpp - Implements postfix expression processing within a linked list-based architecture, enabling conversion from infix to postfix notation and evaluation of postfix expressions
- Facilitates interactive demonstration of expression parsing and calculation, leveraging linked lists for operand storage and operator management, thereby illustrating core concepts of expression evaluation and data structure integration in the overall project.linkedListThreeOne.cpp - Implements linked list-based functionality to reverse input strings, enabling efficient character manipulation
- Facilitates user interaction for input collection and displays reversed strings, serving as a core component for string processing within the larger project architecture focused on data structure applications
- Enhances understanding of linked list operations through practical string reversal demonstrations.linkedListThreeSix.cpp - Implements core functions for processing and evaluating postfix expressions within a linked list-based architecture
- Facilitates conversion from infix to postfix notation and computes the result of postfix expressions, enabling efficient expression parsing and calculation in the overall project focused on expression processing and data structure manipulation.implementations.hpp - Defines generic stack and queue data structures utilizing linked list implementations, facilitating efficient LIFO and FIFO operations within the broader codebase
- These abstractions enable flexible, type-safe management of data sequences, supporting various application needs while maintaining modularity and reusability across the project architecture.linkedListFour.cpp - Implements a key-value linked list to manage and manipulate pairs of strings, enabling efficient data retrieval, insertion, and deletion based on keys
- Serves as an interactive demonstration within the project, showcasing linked list operations tailored for key-value data structures, and integrates seamlessly into the overall architecture to facilitate dynamic data management.linkedListThreeFive.cpp - Implements a user-interactive demonstration of a doubly linked list, enabling addition, removal, and bidirectional traversal of string data
- Integrates with utility functions for input validation and menu handling, facilitating hands-on understanding of doubly linked list operations within the broader data structure architecture
- Serves as an educational component showcasing dynamic list manipulation.linkedListFiveTwo.cpp - Implements a stack data structure for string elements, enabling dynamic management of data with push and pop operations
- Facilitates interactive demonstration of stack behavior, allowing users to add or remove items while visualizing the current stack state
- Serves as an educational tool within the larger linked list and data structure architecture, illustrating stack usage and management.linkedListChapter.hpp - Defines comprehensive linked list structures and utility classes supporting data manipulation, including singly, doubly, and ordered variants
- Implements stack and queue abstractions atop linked lists, facilitating flexible data management
- Serves as the core interface for various linked list-based algorithms and problem solutions within the project architecture, enabling efficient data operations across multiple problem domains.linkedlist.hpp - Defines versatile linked list data structures supporting dynamic data management, ordered insertion, and bidirectional traversal
- Facilitates efficient element addition, removal, and access within a modular architecture, serving as foundational components for complex data handling and algorithm implementation across the codebase.linkedListThreeThree.cpp - Implements linked list-based queue operations to facilitate an interactive queue management system
- Enables users to create, display, add, and remove elements within a fixed-size queue, demonstrating core data structure functionalities
- Serves as a practical module within a larger project focused on linked list and queue implementations, emphasizing user interaction and dynamic data handling.
Stack Chapter Files
⦿ Stack Chapter Files
File Name Summary stackOneTwo.cpp - Implements core stack operations such as setting capacity, adding elements, and clearing stored data within a limited array structure
- Facilitates user interaction through a menu-driven interface, enabling dynamic management of stack contents while ensuring proper error handling and memory management
- Serves as the primary logic handler for stack manipulation within the overall program architecture.stackOneThree.cpp - Implements core functionalities for managing a dynamic stack data structure, including user interaction, data insertion, and clearing operations
- Facilitates stack manipulation through a menu-driven interface, enabling users to add data, view current contents, and reset the stack
- Serves as the operational backbone for stack management within the broader application architecture.stackChapter.hpp - Defines interfaces for various stack-related functionalities within the project, enabling operations such as number base conversions, fixed and dynamic array-based stack implementations, and string reversal
- Serves as a centralized access point for encapsulating stack activities, facilitating modularity and integration across different stack modules in the overall architecture.stackOneOne.cpp - Implements a user-interactive module for converting decimal numbers into binary, octal, or hexadecimal formats
- Facilitates setting decimal values, performing conversions, and displaying results within a structured menu-driven interface
- Integrates with broader system architecture to enable seamless number base transformations, supporting educational or computational tasks involving number system conversions.stackOneFour.cpp - Implements a stack-based utility for reversing input strings, facilitating user interaction through a menu-driven interface
- It enables users to input strings, view their reversed forms, and navigate related options, integrating with broader program functions via polymorphic method calls
- This component enhances the overall architecture by providing core string manipulation capabilities within a modular, user-friendly framework.
Custom Utility Files
⦿ Custom Utility Files
File Name Summary customUtility.hpp - Provides foundational utility functions for handling standard user input, including validation, formatting, and input normalization
- Facilitates abstraction of common input-related operations, ensuring consistent data processing across the project
- Enhances user interaction robustness and streamlines input management within the overall application architecture.customUtility.cpp - Provides essential utility functions for input normalization, validation, and formatting within the application
- Facilitates robust user interaction by ensuring valid numeric inputs, structured text formatting, and controlled data collection capacity management
- Enhances overall system reliability and user experience by standardizing input handling and output presentation across the codebase.
Sort Chapter Files
⦿ Sort Chapter Files
File Name Summary sortFourTwo.cpp - Implements user interface and core functionalities for managing and sorting data collections using Insertion Sort
- Facilitates data input, preview, sorting in ascending or descending order for integers and strings, and data deletion
- Serves as the central component for interactive data manipulation within the overall architecture, enabling efficient data organization and user-driven operations.sortFourFour.cpp - Implements core functionalities for managing a binary search tree, including data insertion, traversal (pre-order, in-order, post-order), and complete tree deletion
- Facilitates user interaction through a menu-driven interface, enabling dynamic data manipulation and visualization of tree structures, thereby supporting the overall architecture of a binary tree-based data processing system.sortFourThree.cpp - Implements user interface and core functionalities for data sorting using Selection Sort, supporting both integer and string data types
- Facilitates data input, preview, sorting in ascending or descending order, and data deletion, enabling interactive data manipulation within the overall architecture
- Serves as the primary module for managing and executing sorting operations in the application.sortFourOne.cpp - Implements user interface and core functionalities for data sorting using Bubble Sort, supporting both integer and string data types
- Facilitates data input, preview, sorting in ascending or descending order, and data deletion, enabling interactive manipulation within a modular architecture
- Serves as the primary component for managing data operations and user interactions in the overall sorting application.sortChapter.hpp - Defines an interface for various sorting algorithms and binary tree traversals within the Sort chapter
- Facilitates data manipulation, including sorting integers and strings with Bubble, Insertion, and Selection Sort, as well as visualizing binary trees through pre-order, in-order, and post-order traversals
- Serves as a foundational component for implementing and managing data organization functionalities across the project.
🐛 Report Issues: Submit bugs found or log feature requests for the struktur-data-dan-algoritma project.
Contributing Guidelines
- Fork the Repository: Start by forking the project repository to your github account.
- Clone Locally: Clone the forked repository to your local machine using a git client.
git clone https://github.com/reyharighy/struktur-data-dan-algoritma
- Create a New Branch: Always work on a new branch, giving it a descriptive name.
git checkout -b new-feature-x
- Make Your Changes: Develop and test your changes locally.
- Commit Your Changes: Commit with a clear message describing your updates.
git commit -m 'Implemented new feature x.' - Push to github: Push the changes to your forked repository.
git push origin new-feature-x
- Submit a Pull Request: Create a PR against the original project repository. Clearly describe the changes and their motivations.
- Review: Once your PR is reviewed and approved, it will be merged into the main branch. Congratulations on your contribution!
