Data Structures and Algorithms are fundamental feature sets that every Software Engineer, Junior or Senior, needs to have. In this series, we will be going through most of the data structures both theoretically but mostly practically, and also their application areas. Let's first explore what each of the terms means.

A **Data Structure** is a **storage used to store and organize data**. This is then further divided into 2 categories, we have linear and non-linear data structures.

Examples of Linear Data Structures are:

Array

Stack

Queue

Linked Lists

Examples of Non-Linear Data Structures are:

Trees

Graphs

An **algorithm** is a **set of well-defined instructions to solve a particular problem**. Think about cooking, when cooking, one follows a set of steps to be able to get the end product which in this case would be food. The set of steps is an algorithm. Almost everything we do in our day-to-day lives is an algorithm, from your morning routine to how you create and run your business. Hence, why learning algorithms is efficient.