Welcome to the series of articles on data structures and algorithms.
I hope to accomplish many objectives through this series. My main objective is to help the reader understand all the types of data structures, so that we can all learn how to write more efficient programs. We will begin with the concept of Big-O notation and how any programmer can use this mathematical tool to assess the running time of the algorithms, which we will develop in this series, as well as the reader's own algorithms.
Afterwards, we will consider linear data structures and we will explore how they are useful. We will then be distinguishing them from nonlinear data structures and we will investigate the reasons as to why they are needed, along with their respective usefulness. Our choice of languages will be C# and C++ and we will develop a generic data structures framework, so that we can have the knowledge of how the designers of .NET framework collections might have implemented the data structures, which are used today in our programs.
Having this knowledge will make us more competent computer scientists and programmers. Some of the data structures that will be studied and implemented by us include queues, stacks, arrays, linked lists, trees, graphs, and hash tables. Some of the algorithms that we will consider and implement will search and sort our data. Along the way, we will develop good software engineering practices, as well as find out the strengths and weaknesses of the algorithms. We will investigate what we did, why we did and we will have fun along the way. I hope, you stay tuned for the rest of the series. Thus, are you ready to find out about the internals of the various data structures, which you know and love?
If so, let's go for it and I will meet you in the next article titled Data Structures and Algorithms Part 2: A Word About Big-O notation.