diff --git a/search/sublist_search.cpp b/search/sublist_search.cpp index 9f854ce5702..0954173d20c 100644 --- a/search/sublist_search.cpp +++ b/search/sublist_search.cpp @@ -90,6 +90,20 @@ Node *makeLinkedList(const std::vector &data) { return head; } +/* + * @brief This function dealocates memory related to the given list + * It recursively deletes all of the nodes of the input list. + * @param room the root/head of the input list + * @warning Plese note that the memory for each node has to be alocated using + * new. + */ +void deleteList(Node *const root) { + if (root != NULL) { + deleteList(root->next); + delete root; + } +} + /** * @brief Main searching function * @param sublist A linked list which is supposed to be searched in mainList. @@ -217,8 +231,8 @@ class TestCases { log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" "~"); - delete (sublistLL); - delete (mainlistLL); + deleteList(mainlistLL); + deleteList(sublistLL); } /** @@ -270,6 +284,9 @@ class TestCases { log("[PASS] : TEST CASE 2 PASS!"); log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" "~"); + + deleteList(mainlistLL); + deleteList(sublistLL); } /** @@ -318,6 +335,9 @@ class TestCases { log("[PASS] : TEST CASE 3 PASS!"); log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" "~"); + + deleteList(mainlistLL); + deleteList(sublistLL); } }; @@ -366,5 +386,8 @@ int main(int argc, char *argv[]) { } else { std::cout << "[FALSE] - sublist NOT found in main list\n"; } + + deleteList(mainlistLL); + deleteList(sublistLL); return 0; }