# Data Structure complete overview in one post

## What is Data Structure?

In simple term we can define data structure as, Data Structure is a way of organizing the data elements in memory so that we can efficiently retrieve it and perform any operation efficiently.

Now, before moving forward on next topics lets have a eyes over the  syllabus of data structure which questions and answers you will find on this website on other page.

## Data Type

It describes which type of value can be stored by a variable. suppose if a variable has int data type it means that that variable can only hold the integer values.

It is of two types:-

1). Primitive data type

2). non-primitive data type

For more detail, you may refer below URL.

Now let’s move on the next topics “Algorithm”

An algorithm is a finite steps solution of a problem in a human-readable format. Every algorithm has some space and time complexity which denotes how much an algorithm is efficient.

Five asymptotic notations are Big-Oh notation, Omega notation, Theta notation, little O and little omega to measure the efficiency.

I hope you got a little bit idea of an Algorithm.

An array is a collection of similar type of elements which is stored in contiguous memory locations. A here similar type of element means each element have the same data type.

We can denote it as

int arr[] ;

Means arr is an array in which we can only assign integer type of elements.

An array is Basically of two types:

1). One dimensional or single dimensional array

2). Multidimensional Array

Representation of an Array:

We can represent array in two ways

1). Row Major Order

LOC (A [i, j]) = base_address + W [M (i) + j] Here,

W = Word size means a number of bytes occupied by each element of an Array.

N = Number of rows in the array.

M = Number of columns in the array.

2). Column Major Order

LOC (A [i, j]) = base_address + W [N (j) + (i)]

Here,

W = Word size means a number of bytes occupied by each element of an Array.

N = Number of rows in the array.

M = Number of columns in the array.

Linked List is a linear and dynamic data structure. It stores elements at non-contiguous memory locations.

Linked List is of different types:

We have seen some basics of Array and Linked List

## Searching and Sorting

Searching: It is an operation to find a particular element in a list or in array.

Types of searching

1. Linear Search
2. Binary Search
3. Hash Search
4. Binary Tree Search

Sorting: It is also an operation on elements of an array or linked list to arrange it either in ascending or descending order.

Types Of Sorting

1. Insertion Sort
2. Bubble Sort
3. Selection Sort
4. Quick Sort
5. Merge Sort
6. Heap Sort

I think we can wrap up here. For more detail you can follow given link

## Graph and Tree

Graph : A Graph is a non-linear and abstract data structure which consist of nodes and edges. A single edge connects two Vertices in graph.

We Can Traverse the node of graph by using two algorithms

1. BFS ( Breadth First Search)
2. DFS (Depth First Search)

Tree : Tree is also a non-linear data structure that consists node which is connected using edge. But in tree all node are arrange as root node, parent node and child node in hierarchical manner.

Minimum cost spanning tree : It is a subset of tree and graph in which sum of the weight to traverse each node is minimum. A tree has many number of spanning tree but not all are minimum spanning tree.

There are some algorithm to identify minimum spanning tree.

1. Prim’s Algorithm
2. Kruskal’s Algorithm

## Stack and Queue

Stack: Stack is an abstract data type which follow the LIFO ( Last In First Out) Principle.

We can perform only two operation on stack

1). PUSH

2). POP

Stacks are used to evaluate post-fix expression.

Recursion : Recursion is a process in which one function calls it self again and again for a finite time to solve a given problem.

Queue: Queue is also a abstract data type which follow FIFO(First In First Out Principle).

2 Operations can be performed on Queue

1). enqueue

2). dequeue

Enqueue means put elements in queue and dequeue means remove it from queue.