# Guide to Data Structures and Algorithms with Examples

What is a Data Structure and how are those useful? Everybody refers to Data Structures as an ocean. But, those are the building blocks of programming. We can see a complete overview of them in this article.

## Introduction

Data Structures are defined to well store the data in any required memory. But where do algorithms come into play? Algorithms are techniques that are used to access the data stored in memory. Each data structure has its advantages one takes less memory other to take less time to be accessed. These five types of data structures. let us discuss them in detail.

## What is a Data Structure?

A Data Structure is a way of storing data in memory. It helps in the efficient usage of memory. It is language-Independent. Meaning it can be implemented in any language. there are five types of Data Structures. Let us dive into it.

## Most Common Data Structures

- Array
- Stack
- Queue
- Linked List
- Trees

## What does array mean in Data Structures

An array is a derived data type defined to store data values of similar type in groups of similar locations. In an array, all values are stored continuously. But, the problem with the array it is not dynamically allocated, Hence we need to redefine it. To address this problem, a Linked List is defined.

## How do we use arrays?

Arrays are used for storing data of similar types, like names of students, and roll numbers with respective data types like Strings, Integers. These are also used to implement Stacks and Queues.

## Types of Array Data Structure

There are three types of arrays namely, One-Dimensional, Two-Dimensional and Multi-Dimensional Arrays.

### One-Dimensional Arrays

In this type of array, only one row of data is present just like a sequence of data values. It is the most used type of array in any language.

### Two-Dimensional Arrays

Two-dimensional arrays can also be defined as an analogy to Matrices in maths which consists of rows and columns which are stored in two ways namely, Column-Major Order, and Row-Major Order.

### Multi-Dimensional Arrays

Multi-Dimensional arrays are extensions of two-dimensional arrays where data is stored in a more complex way. It consists of more than two dimensions.

## Implementation of Array

We can implement an array in almost all programming languages. Except, In python, we need to use lists instead of Arrays. we can also use the conventional array but to do that we need to import the NumPy library which is not that much important since we can implement all the operations that can be performed on an array to a list also.

```
#include <stdio.h>
void main()
{
int exArr[200];
//Taking input values;
for(int h=0;h<=n;h++)
{
scanf("%d",&exArr[i]);
}
}
```

Code language: C/AL (cal)

## What is Stack Data Structure?

Stack is not a separate Data Type, It is a customized version of Array. It is a LIFO(Last In First Out) type Data Structure. The operations a stack implements are Push, and Pop. Push is the process of adding an element to the Stack and pop is the process of removing the element from the Stack.

## How does Stack work in Data Structure?

A stack can be referred to as LIFO Data Structure which means the last inserted element into the array comes out first.

## Benefits of Stack Data Structure

- Stacks are used for implementing LIFOs.
- Stacks help in good Memory Allocation and Deallocation.

## Real-world application of Stacks

- Ctrl+z in the computer is an application of stack.
- Recursion works based on stacks.
- Recursive Function calls are addressed using stacks only.

## What are Queues in Data Structure?

Stack is not a separate Data Type, It is a customized version of Array. It is a FIFO(First In First Out) type Data Structure. The operations of a queue are Insertion and Deletion. Insertion is the process of adding an element to the Queue and Deletion is the process of removing the element from the Queue.

## How does queue work in data structure?

A Queue works based on FIFO which means the element that is first inserted into the queue will be deleted first.

## Types of queue data structure

There are three types of queues. They are,

- Circular Queue
- Priority Queue
- Double Ended Queue

### Circular Queue

A Queue where elements are inserted circularly such that no memory is wasted. Meaning if there is a vacancy in front then an element can be inserted there even though we usually inserted it at the end.

### Priority Queue

A Priority Queue is a queue where each element has a certain priority and operations are performed based on the priority.

### Double-Ended Queue

This queue does not follow the FIFO rule meaning insertion and deletion can be performed from both ends.

## What are Linked Lists in Data structure?

Linked Lists are considered a competitor for arrays. These are defined to promote dynamic memory allocation which is not possible in arrays. Linked lists use pointers for accessing elements.

## Types of Linked Lists

There are three types of Linked Lists. They are,

- Single Linked List
- Double Linked List
- Circular Linked List

### Single Linked List

This is just a normal Linked list where the node consists of two parts where one consists of data and the other consists of links to the next part. In this type of linked list, we can traverse only in one direction.

### Double Linked List

Unlike Single Linked List, This can traverse in both directions. It also consists of the previous node address in the node part along with the data and the next link’s address.

### Circular Linked List

In this type of Linked list, it is arranged circularly such that if there is a vacancy in front due to elements deleted there and the end part is completed then we can add them at the front.

## Benefits of Linked List

- Unlike Arrays, Dynamic Memory Allocation is possible.
- Faster for accessing elements and Deleting them.
- Tree Data Structure can be implemented using a linked list.

## What is Graph data structure?

It is a non-linear Data Structure that consists of Edges and Vertices. it does not support indexing.

## Real-world applications of Graphs

- Navigating through Google Maps is possible due to the use of Graphs.
- Many problems like Path-Optimization can be solved using graphs in Competitive Programming.

## What is an algorithm?

The steps involved in solving a coding problem is called Algorithm. It is independent of the programming language.

## Types of Algorithms

There are so many types of algorithms we can use for solving a coding problem. They are,

- Brute-Force Algorithm
- Recursive Algorithm
- Divide and Conquer

### Examples

- We use recursive algorithms for solving almost every coding problem like finding the Fibonacci number.
- Almost all sorting algorithms follow Divide and Conquer approach.
- Searching techniques in an array use mostly Brute-Forcing.

## Conclusion

Data Structures and Algorithms are considered the most important topic in Programming. Most Interview Questions asked in technical rounds are based on Data Structures and Algorithms only. Hence, Practice well and ace the interviews.

## Frequently asked Questions(FAQs)

### What is the best way to learn data structures and algorithms?

The best way is to learn by practicing meaning you have to implement everything on your own.

### Can I learn DSA for free?

Yes, You can. There are a lot of free resources that are available on the internet mainly on youtube. But Paid courses are preferred due to structured content.

### How to Start with Data structure and algorithms?

You can start with arrays then stacks, queues, linked lists, and finally trees and graphs.

### From where to learn data structure

My recommendation is to go and check out the codedamn’s website where you can find one of the best ones.

### What should I Learn about data Structure and Algorithms?

You should everything about arrays, stacks, queues, trees, linked lists, and graphs perfectly.

Sharing is caring

Did you like what Krishna Bethina wrote? Thank them for their work by sharing it on social media.

## No comments so far

Curious about this topic? Continue your journey with these coding courses:

4.64k students learning

Piyush Garg

Master Non-Linear Data Structures

Prerak Mehta

Data Structures Algorithms in Java – SECRETS to Ace LeetCode