The first part, referred to as "dict2," employs dynamic memory allocation and a struct array to construct a dictionary for storing cafe information obtained from a dataset about the City of Melbourne. Users can query this dictionary by inputting a prefix to retrieve cafe information using attributes (keys) from the dataset. The complete set of tests for this part can be found in the "run_dict2.txt" file.
The second part, known as "dict3," utilizes the trie data structure, also known as a radix tree, as its primary data structure. This choice is made to maintain a search time complexity of O(log N) rather than O(n). The complete set of tests for this part can be found in the "run_dict3.txt" file.