{"id":26053291,"url":"https://github.com/taharachedi/custom_double_linked_list_library-cpp","last_synced_at":"2025-07-10T10:33:23.635Z","repository":{"id":280952300,"uuid":"943721014","full_name":"taharachedi/Custom_Double_Linked_List_Library-CPP","owner":"taharachedi","description":"A C++ template-based doubly linked list implementation providing essential list operations such as insertion, deletion, searching, and reversal. ","archived":false,"fork":false,"pushed_at":"2025-03-06T06:53:59.000Z","size":0,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-06T07:45:20.966Z","etag":null,"topics":["cpp","data-structures"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/taharachedi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-06T06:48:17.000Z","updated_at":"2025-03-06T07:03:31.000Z","dependencies_parsed_at":"2025-03-06T07:45:22.771Z","dependency_job_id":"099f2665-ac69-43be-bfc1-c2bd3e52ea27","html_url":"https://github.com/taharachedi/Custom_Double_Linked_List_Library-CPP","commit_stats":null,"previous_names":["taharachedi/custom_double_linked_list_library-cpp"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taharachedi%2FCustom_Double_Linked_List_Library-CPP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taharachedi%2FCustom_Double_Linked_List_Library-CPP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taharachedi%2FCustom_Double_Linked_List_Library-CPP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taharachedi%2FCustom_Double_Linked_List_Library-CPP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/taharachedi","download_url":"https://codeload.github.com/taharachedi/Custom_Double_Linked_List_Library-CPP/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242515265,"owners_count":20141986,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","data-structures"],"created_at":"2025-03-08T07:27:48.765Z","updated_at":"2025-03-08T07:27:49.542Z","avatar_url":"https://github.com/taharachedi.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📌 Doubly Linked List Library (clsDblLinkedList) ⚡\n\n\u003e **A C++ template-based doubly linked list implementation providing essential list operations such as insertion, deletion, searching, and reversal. 🚀**\n\n---\n\n## 🌟 Project Overview\n\nThe `clsDblLinkedList` class is a **doubly linked list** implementation in C++ that allows dynamic data management using nodes connected in both forward and backward directions. This library supports:\n\n- **Insertion** at the beginning, end, or after a specific node 🔄\n- **Deletion** of nodes, including first, last, and specific nodes ❌\n- **Searching** for elements in the list 🔍\n- **List Reversal** to change traversal direction 🔄\n- **Fetching \u0026 Updating** elements at specific indices 📌\n- **Clearing** the entire list in one function call ✨\n\nThis class is **generic**, meaning it can store any data type using C++ templates.\n\n---\n\n## ✨ Features\n\n### 🔹 Insertion Operations\n- **`InsertAtBeginning(Value)`**: Inserts a node at the start.\n- **`InsertAtEnd(Value)`**: Inserts a node at the end.\n- **`InsertAfter(Node, Value)`**: Inserts a node after a given node.\n- **`InsertAfter(Index, Value)`**: Inserts a node after a given index.\n\n### 🔹 Deletion Operations\n- **`DeleteNode(Node)`**: Deletes a specific node.\n- **`DeleteFirstNode()`**: Deletes the first node.\n- **`DeleteLastNode()`**: Deletes the last node.\n- **`Clear()`**: Removes all nodes from the list.\n\n### 🔹 Search \u0026 Retrieval\n- **`Find(Value)`**: Searches for a node containing a specific value.\n- **`GetNode(Index)`**: Retrieves a node at a given index.\n- **`GetItem(Index)`**: Returns the value stored in a specific node.\n\n### 🔹 Modification \u0026 Utility\n- **`UpdateItem(Index, NewValue)`**: Updates the value of a node at a specific index.\n- **`Reverse()`**: Reverses the order of the list.\n- **`Size()`**: Returns the number of elements in the list.\n- **`IsEmpty()`**: Checks if the list is empty.\n- **`PrintList()`**: Displays the contents of the list.\n\n---\n\n## 🚀 How It Works\n\n### 🔹 Insertion \u0026 Deletion\nThe class allows adding elements dynamically at different positions and provides efficient deletion methods to manage memory.\n\n### 🔹 Searching \u0026 Indexing\nElements can be found using `Find(Value)`, or accessed via index using `GetNode(Index)` and `GetItem(Index)`. Updates are done via `UpdateItem(Index, NewValue)`.\n\n### 🔹 Reversal \u0026 Traversal\n`Reverse()` swaps the links of all nodes, effectively reversing the list order, while `PrintList()` provides a formatted view of elements.\n\n### 🔹 Memory Management\nThe class dynamically allocates memory for nodes and properly deletes them when removed.\n\n---\n\n## 📚 Potential Enhancements\n\n- 🏗 **Iterator Support**: Implementing iterators for STL-like traversal.\n- ⏳ **Time Complexity Optimization**: Enhancing insertion, deletion, and search operations.\n- 🗃️ **Persistent Storage**: Implementing file handling for storing and retrieving list data.\n- 🚀 **Thread Safety**: Making the class thread-safe for concurrent operations.\n\n---\n\n## ⚙️ Technologies Used\n\n- **Language**: C++\n- **Templates**: Enables the list to store any data type\n- **Pointers**: Used for dynamic memory management\n- **Doubly Linked List**: Allows bidirectional traversal\n\n---\n\n## 🎯 Learning Outcomes\n\nThis project demonstrates:\n- ✅ **Dynamic memory allocation \u0026 management**\n- ✅ **Linked list operations (insert, delete, search, traverse, reverse)**\n- ✅ **Use of C++ templates for generic programming**\n- ✅ **Efficient pointer-based data structures**\n\n---\n\n## 📜 License\n\nThis project is **open-source**. Feel free to modify and enhance it! 🚀\n\n---\n\n## 🤝 Contributing\n\nContributions are welcome! If you have ideas for improvements, submit a Pull Request.\n\n---\n\n## 🏁 Ready to Explore?\n\n### 🚀 How to Run\n1. **Download** the repository.\n2. **Include** `clsDblLinkedList.h` in your project.\n3. **Compile \u0026 Run** your C++ program with a standard compiler (e.g., `g++ main.cpp -o output`).\n4. **Test** different operations on the linked list.\n\n---\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaharachedi%2Fcustom_double_linked_list_library-cpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftaharachedi%2Fcustom_double_linked_list_library-cpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaharachedi%2Fcustom_double_linked_list_library-cpp/lists"}