#include using namespace std; //******************************************************************** // HackerRank Prepare > Data Structures > Linked Lists: Print Elements //******************************************************************** class SinglyLinkedListNode { public: int data; SinglyLinkedListNode *next; SinglyLinkedListNode(int node_data) { this->data = node_data; this->next = nullptr; } }; class SinglyLinkedList { public: SinglyLinkedListNode *head; SinglyLinkedListNode *tail; SinglyLinkedList() { this->head = nullptr; this->tail = nullptr; } void insert_node(int node_data) { SinglyLinkedListNode* node = new SinglyLinkedListNode(node_data); if (!this->head) { this->head = node; } else { this->tail->next = node; } this->tail = node; } }; void free_singly_linked_list(SinglyLinkedListNode* node) { while (node) { SinglyLinkedListNode* temp = node; node = node->next; free(temp); } } // Complete the printLinkedList function below. /* * For your reference: * * SinglyLinkedListNode { * int data; * SinglyLinkedListNode* next; * }; * */ void printLinkedList(SinglyLinkedListNode* head) { if (head == nullptr) return; cout << head->data << " "; return printLinkedList(head->next); } int main() { map> testCases = { {2, {16,13}}, {5, {1,2,3,4,5}}, }; for (auto& tc: testCases) { SinglyLinkedList* llist = new SinglyLinkedList(); int llist_count = tc.first; int llist_item; for (int i = 0; i < llist_count; i++) { llist_item = tc.second.at(i); llist->insert_node(llist_item); } printLinkedList(llist->head); cout << endl; free_singly_linked_list(llist->head); } return 0; }