Data structures are fundamental, fundamental concepts in computer science. To design and develop efficient software systems, a good knowledge of data structures is essential. In this article and the next series, I’ll revisit data structures. Let’s get started.

We’ve been working with data. How we store data, organize and group it matters. We can take a few examples from our daily lives of how organizing data in a specific structure can be helpful.

We can search a word in a dictionary quickly and efficiently in one language, because the words in the dictionary are sorted, but what if the words in the dictionary are not sorted? Looking up a word from millions of words is impossible and impractical. Thus, dictionaries are organized as a sort of sorted list of words.

We can take another example.

We have maps of cities and things like that, the locations of landmarks, the connections of road networks and all that kind of data is organized geometrically, and presented geometrically on a two-dimensional surface. Therefore, map data needs to be structured so that we can determine scope and direction, so that we can efficiently find landmarks and get a route from one place to another.

To give you another example,

For businesses such as daily entries and billing records, the most logical way to organize and store data is in tabular form. It is easy to aggregate data and present views in tabular form.

Therefore, organizing different data requires different data structures.

Computers can now process all kinds of data, including text, images, video, relational data, geospatial data, just about every kind of data we use on earth. How we store and organize data in computers is very important. Because even though machines are very computationally powerful, they can handle very, very large amounts of data. If we don’t use the right data structure, the right logical structure, then our software systems won’t be efficient.

The formal definition of a data structure should be that a data structure is a way of storing and organizing data on a computer so that it can be used efficiently.