A data structure is a way to organize the collection of related data elements in such a manner that it should be accessed, modified and place it back after the operation efficiently and in relatively small amount of time.

Data structures is the basis for abstract data types (ADT). Abstract Data Type is logical form of the data type and data structure implements the physical form of the data type.

There are many different type of data structures defined to manage different type of data efficiently. Not all data structure is suitable for all kind of data, selecting which structure suits the requirement depends on many factors like amount of data, how they are arranged, accessibility, time, some are highly specialized to specific tasks and many more.

For example, searching a data in sorted elements less time (log n), while unsorted may take (n = number of elements).

This Data Structure tutorial includes Array, Pointer, tree, hashing, Structure, Linked List, Stack, Queue, Graph, heap, graphs etc.

## Data Structures Topics

- Array
- Matrix
- Linked List
- Stack
- Queue

- Binary Tree
- Binary Search Tree
- Heap
- Hashing
- Graph

### Overview:

- Linear Data Structures
- Non- Linear Data Structure
- Binary Tree
- Binary Search Tree

- Heap
- Hash
- Graph
- Abstract Data Types

#### Array:

- Write a program to Search, insert and delete in an unsorted array
- Write a program to Search, insert and delete in a sorted array
- Write a program to reverse an array
- Find the Missing Number
- Find Median of two sorted arrays

#### Matrix:

- WAP to Search in a row wise and column wise sorted matrix
- WAP to print a matrix in spiral form
- Print unique rows in a given Boolean matrix

#### Linked List Data Structure:

- Introduction to Linked List
- Insert an element into Linked List
- Delete given key from Linked List
- Delete given key at given position from Linked List
- Length of a Linked List using both Iterative & Recursive method
- Modify head pointer of a Linked List
- WAP to Swap nodes in a linked list without swapping data
- WAP to Reverse a linked list
- WAP to Merge two sorted linked lists
- WAP to Merge Sort for Linked Lists
- WAP to Reverse a Linked List in groups of given K size
- Detect and Remove Loop from Linked List
- Doubly Linked List Introduction
- Insert and delete an element in to DLL
- WAP to Reverse a Doubly Linked List
- Quicksort on Doubly Linked List
- Merge Sort for Doubly Linked List
- Circular Linked List Introduction
- Circular Singly Linked List Insertion, Delete, and search
- Circular Linked List Traversal
- Split a Circular Linked List into two half
- Sorted insert into circular linked list

#### Stack:

- Introduction to Stack
- Infix to Postfix Conversion
- Evaluation of Postfix Expression
- Reverse a String
- Implement two stacks in an array
- Check for balanced parentheses in an expression
- Sort a stack using recursion

#### Queue:

- Queue Introduction
- Implementation of Queue using Linked List
- Applications of Queue
- Priority Queue
- Deque Introduction & Applications
- Implement Queue using Stacks

#### Binary Tree:

- Binary Tree Introduction
- Properties n Types of Binary Tree
- Applications of tree
- Tree Traversals
- Breadth First Search
- Depth First Search
- Level Order Tree Traversal
- Diameter of a Binary Tree
- Inorder Tree Traversal without Recursion
- Inorder Tree Traversal without recursion and without stack
- Height of a Tree
- Construct Tree from given Inorder and Preorder traversals
- Maximum width of a binary tree
- Print nodes at k distance from root
- Print Ancestors of a given node in Binary Tree

#### Binary Search Tree:

- Search, Insert, & Deletion from BST
- Minimum value in a BST
- Given binary tree is BST or not
- Lowest Common Ancestor in a BST.
- Inorder Successor in BST
- Floor and Ceil of a BST
- Merge Two Balanced Binary Search Trees

#### Heap:

- Heap Sort
- Binary Heap
- Binomial Heap
- K’th Largest Element in an array