The structure of data is something which is crucial in today’s world of programming. Constructs such as lists, graphs and trees are most commonly used to store data. In coming up with a design for a software, one needs to be good at choosing the right structure to store the given data in.
To figure this out, one approach could be to think about how the data appears in the real world while also thinking of how the data is going to be used or changed to solve the given problem.
For example, to design a program for a dictionary, one can think of how a real world dictionary is written. All the words are sorted alphabetically. So, when looking up a word, one can flip to the page containing words near to the one we are looking for. In computer science, a trie is a tree which allows for a prefix based look up. This could be an option to choose when designing a dictionary.