## What is Data Structure?

Data structure can be described as a storage system that stores and organizes data. Data structure is a method of organizing data on a computer in a way that makes it easy to access and update.

It all depends on your project and requirement. It is crucial to choose the correct data structure for your project. for example, If you need to store sequential data in memory, you can choose the Array data structure.

## Different Types of Data Structure

Data structures can be divided into two types:

- Linear data structure
- Non-linear data structure

Let’s take a look at each type.

### 1. Linear Data Structures

Linear data structures have elements arranged in a particular order. Because elements are ordered in a particular order, it is easy to implement.

However, the complexity of the program can increase. Because of the operational complexity, the best option might be to use linear data structures.

#### 1. Array Data Structure

An array is a collection of elements stored in memory that is organized in continuous memory. An array contains elements of the same type. The type of elements is also important. The programming language determines what can be stored as arrays.

#### 2. Stack Data Structure

Stack data structures store elements according to the LIFO principle. This means that the stack’s last element will be deleted first.

It functions exactly like a pile of plates. The last plate on the pile will be taken first.

#### 3. Queue Data Structure

Unlike stack, the queue data structures work in the FIFO principle. The first element in the queue will be deleted first.

It is just like a queue of people at a ticket counter with a long queue. The ticket will be given to the first person in the queue will get the ticket first.

#### 4. Linked List Data Structure

In linked list data structure, list data structures are connected by a series of nodes. Each node holds the data items as well as the address to the next node.

### 2. Non-linear Data Structures

Non-linear data structure elements are not in a specific order, unlike linear data structures. They are instead arranged in a hierarchical fashion, where each element can be connected to another.

Non-linear data structures can be further broken down into graph and tree-based data structures.

#### 1. Graph Data Structure

In graph data structure, Each node is known as a vertex, and each vertex can be connected to another vertex through edges.

**Popular Graph Based Information Structures:**

- Spanning tree and Minimum Spanning tree
- Components with Strongly Connected Connections
- Adjacency Matrix
- Adjacency list

#### 2. Tree Data Structure

Similar to a graph, A tree is a collection of vertices or edges. In tree data structure, however, there can only be one edge between two vertices.

**Popular Tree-Based Data Structure**

- Binary Tree
- Binary Search Table
- AVL tree
- B-Tree
- B+ Tree
- Red-Black Tree

### Linear Vs Non-linear Data Structures

Let’s now look at the main differences between linear and nonlinear data structures.

**Linear Data Structures**

- Each data item is arranged in a sequential order one after the other.
- The single layer contains all the items present.
- It can be traversed on a single run. This is true if we start with the first element. We can traverse all elements in a sequence in one pass.
- Memory utilization is not efficient.
- With increasing data sizes, the time complexity increases.
**Example:**Arrays, Stack, Queue

**Non-Linear Data Structures**

- Data items are organized in a non-sequential (hierarchical) order.
- Data items can be found at different levels.
- It takes multiple runs. It is possible to not traverse all elements in one pass if you start with the first element.
- Different structures utilize memory in it in different ways, depending on their needs.
- The complexity of time remains constant.
**Example:**Tree, Graph, and Map

## Why Data Structure?

Understanding data structures will help you to understand how each one works. This knowledge will help you choose the best data structure for your project. This allows you to write time- and memory-efficient code.