# Data Structures

## Data Structures

- [Data Structures Manual](https://nitinranganath.gitbook.io/data-structures/master.md)
- [Array ADT](https://nitinranganath.gitbook.io/data-structures/arrays/array-adt.md): Implementation of append, insert, delete and display function in an array.
- [Linear Search](https://nitinranganath.gitbook.io/data-structures/arrays/linear-search.md): Implementation of linear search and methods to improve it
- [Binary Search](https://nitinranganath.gitbook.io/data-structures/arrays/binary-search.md): Implementation of binary search in array using iterative as well as recursive method.
- [Some More Basic Operations](https://nitinranganath.gitbook.io/data-structures/arrays/some-more-basic-operations.md): The get, set, min, max, sum and average operations.
- [Reversing an Array](https://nitinranganath.gitbook.io/data-structures/arrays/reversing-an-array.md): Implementation of 2 of the methods which can be used to reverse an array.
- [Operations in a Sorted Array](https://nitinranganath.gitbook.io/data-structures/arrays/operations-in-a-sorted-array.md): Inserting in a sorted array, checking if an array is sorted and shifting negative elements to the left of array.
- [Merging Two Arrays](https://nitinranganath.gitbook.io/data-structures/arrays/merging-two-arrays.md): Implementation of Merge Algorithm
- [Set Operations](https://nitinranganath.gitbook.io/data-structures/arrays/set-operations.md): Implementation of set operations like union, intersection, difference and set membership.
- [Finding Missing Elements](https://nitinranganath.gitbook.io/data-structures/arrays/finding-missing-elements.md): Methods to find one or more missing elements in an array.
- [Duplicates in an Array](https://nitinranganath.gitbook.io/data-structures/arrays/duplicates-in-an-array.md): Procedure to find and count duplicates in an array.
- [Getting a Pair whose Sum = K](https://nitinranganath.gitbook.io/data-structures/arrays/getting-a-pair-whose-sum-k.md): Obtaining a pair of elements in the array whose sum = k.
- [Finding Max & Min in Single Scan](https://nitinranganath.gitbook.io/data-structures/arrays/finding-max-and-min-in-single-scan.md): Implementation for finding the maximum and minimum element in an array in a single scan itself.
- [Finding the Length of a String](https://nitinranganath.gitbook.io/data-structures/strings/finding-the-length-of-a-string.md): Implementation for finding the length of a string without library functions.
- [Changing Cases in a String](https://nitinranganath.gitbook.io/data-structures/strings/changing-cases-in-a-string.md): ASCII values and it's importance in changing cases in a string.
- [Finding Number of Vowels, Consonants & Words](https://nitinranganath.gitbook.io/data-structures/strings/finding-number-of-vowels-consonants-and-words.md)
- [Reversing a String](https://nitinranganath.gitbook.io/data-structures/strings/reversing-a-string.md): Implementation of reversing a string without using library function.
- [Checking for Palindrome](https://nitinranganath.gitbook.io/data-structures/strings/checking-for-palindrome.md): An efficient way of checking if a string is a palindrome.
- [Duplicates in a String](https://nitinranganath.gitbook.io/data-structures/strings/duplicates-in-a-string.md)
- [Checking if Strings are Anagrams](https://nitinranganath.gitbook.io/data-structures/strings/checking-if-strings-are-anagrams.md): Strings which are composed of the same alphabets and their frequency are known as anagrams of each other.
- [Permutations of a String](https://nitinranganath.gitbook.io/data-structures/strings/permutations-of-a-string.md): Finding all the permutations of a string using backtracking and recursion.
- [Displaying the Nodes](https://nitinranganath.gitbook.io/data-structures/linked-list/displaying-the-nodes.md): Iterative and recursive method to print all the nodes in a linked list.
- [Counting the Nodes](https://nitinranganath.gitbook.io/data-structures/linked-list/counting-the-nodes.md): Iterative and recursive way of counting the number of nodes in a linked list.
- [Sum of all Nodes](https://nitinranganath.gitbook.io/data-structures/linked-list/sum-of-all-nodes.md): Iterative and recursive way of finding the sum of data of all the nodes in a linked list.
- [Finding the Maximum Element](https://nitinranganath.gitbook.io/data-structures/linked-list/finding-the-maximum-element.md): Iterative and recursive way of finding the maximum among all the node's data.
- [Searching in a Node](https://nitinranganath.gitbook.io/data-structures/linked-list/searching-in-a-node.md): Iterative and recursive implementation of linearly searching for an element in a linked list.
- [Inserting a Node](https://nitinranganath.gitbook.io/data-structures/linked-list/inserting-a-node.md): Procedure to insert a new node in the beginning, end or at a specific position in the linked list.
- [Inserting a Node in Sorted List](https://nitinranganath.gitbook.io/data-structures/linked-list/inserting-a-node-in-sorted-list.md): Procedure to insert a new node in a sorted linked list.
- [Deleting a Node](https://nitinranganath.gitbook.io/data-structures/linked-list/deleting-a-node.md): Procedure to delete a node from any position in a linked list.
- [Checking if List is Sorted](https://nitinranganath.gitbook.io/data-structures/linked-list/checking-if-list-is-sorted.md): Procedure to check if a linked list is sorted or not.
- [Removing Duplicates from a List](https://nitinranganath.gitbook.io/data-structures/linked-list/removing-duplicates-from-a-list.md): Procedure to remove duplicate nodes from a linked list.
- [Reversing a Linked List](https://nitinranganath.gitbook.io/data-structures/linked-list/reversing-a-linked-list.md): Iterative and recursive approaches to reverse a linked list.
- [Concatenating Two Lists](https://nitinranganath.gitbook.io/data-structures/linked-list/concatenating-two-lists.md): Procedure to concatenate two linked lists.
- [Detecting a Loop in Linked List](https://nitinranganath.gitbook.io/data-structures/linked-list/detecting-a-loop-in-linked-list.md): Procedure to check if a given list has a loop using Floyd's Cycle Finding Algorithm.
- [Merge Two Sorted Lists](https://nitinranganath.gitbook.io/data-structures/linked-list/merge-two-sorted-lists.md): Procedure to merge two sorted linked lists.
- [Finding the Middle  Node](https://nitinranganath.gitbook.io/data-structures/linked-list/finding-the-middle-node.md): Procedure to find the middle node of a singly linked list.
- [Displaying the Nodes](https://nitinranganath.gitbook.io/data-structures/cirular-linked-list/displaying-the-nodes.md): Procedure to display all the nodes in a circular linked list.
- [Inserting a Node](https://nitinranganath.gitbook.io/data-structures/cirular-linked-list/inserting-a-node.md): Procedure to insert a node at a given index in a circular linked list.
- [Deleting a Node](https://nitinranganath.gitbook.io/data-structures/cirular-linked-list/deleting-a-node.md): Procedure to remove a node from a given position in a circular linked list.
- [Inserting a Node](https://nitinranganath.gitbook.io/data-structures/doubly-linked-list/inserting-a-node.md): Procedure to insert in node in doubly linear linked list.
- [Deleting a Node](https://nitinranganath.gitbook.io/data-structures/doubly-linked-list/deleting-a-node.md): Procedure to delete a node at a given index in a doubly linear linked list.
- [Reversing a Doubly Linked List](https://nitinranganath.gitbook.io/data-structures/doubly-linked-list/reversing-a-doubly-linked-list.md): Procedure to reverse a doubly linear linked list.
- [Circular Doubly Linked List](https://nitinranganath.gitbook.io/data-structures/doubly-linked-list/circular-doubly-linked-list.md): Basic operations for a circular doubly linked list.
- [Stack Using Array](https://nitinranganath.gitbook.io/data-structures/stack/stack-using-array.md): Complete implementation of a stack using array and its functions.
- [Stack Using Linked List](https://nitinranganath.gitbook.io/data-structures/stack/stack-using-linked-list.md): Implementation of a stack using linked list and its functions.
- [Balancing Parenthesis](https://nitinranganath.gitbook.io/data-structures/stack/balancing-parenthesis.md): A program to check if the parenthesis are balanced in an equation.
- [Infix to Postfix](https://nitinranganath.gitbook.io/data-structures/stack/infix-to-postfix.md): Program to convert an infix expression to a postfix expression.
- [Evaluation of Postfix Expression](https://nitinranganath.gitbook.io/data-structures/stack/evaluation-of-postfix-expression.md): Procedure to evaluate a postfix expression using stack.
- [Queue using Array](https://nitinranganath.gitbook.io/data-structures/queue/queue-using-array.md): Implementation of queue using arrays and its functions.
- [Queue using Linked List](https://nitinranganath.gitbook.io/data-structures/queue/queue-using-linked-list.md): Implementation of queue using a linked list.
- [Double Ended Queue](https://nitinranganath.gitbook.io/data-structures/queue/double-ended-queue.md): Implementation of double ended queue using linked list
- [Creating a Binary Tree using Queue](https://nitinranganath.gitbook.io/data-structures/binary-tree/creating-a-binary-tree-using-queue.md)
- [Recursive Tree Traversals](https://nitinranganath.gitbook.io/data-structures/binary-tree/recursive-tree-traversals.md)
- [Iterative Tree Traversals](https://nitinranganath.gitbook.io/data-structures/binary-tree/iterative-tree-traversals.md)
- [Level Order Traversal](https://nitinranganath.gitbook.io/data-structures/binary-tree/level-order-traversal.md)
- [Counting Nodes in a Binary Tree](https://nitinranganath.gitbook.io/data-structures/binary-tree/counting-nodes-in-a-binary-tree.md)
- [Finding the Height of Tree](https://nitinranganath.gitbook.io/data-structures/binary-tree/finding-the-height-of-tree.md)
- [Finding Sum of All Nodes](https://nitinranganath.gitbook.io/data-structures/binary-tree/finding-sum-of-all-nodes.md)
- [Searching in a BST](https://nitinranganath.gitbook.io/data-structures/binary-search-tree/searching-in-a-bst.md)
- [Inserting in a BST](https://nitinranganath.gitbook.io/data-structures/binary-search-tree/inserting-in-a-bst.md)
- [Deleting in a BST](https://nitinranganath.gitbook.io/data-structures/binary-search-tree/deleting-in-a-bst.md)
- [Inserting in an AVL Tree](https://nitinranganath.gitbook.io/data-structures/avl-tree/inserting-in-an-avl-tree.md)
- [AVL Tree Rotations](https://nitinranganath.gitbook.io/data-structures/avl-tree/avl-tree-rotations.md)
- [Deleting in an AVL Tree](https://nitinranganath.gitbook.io/data-structures/avl-tree/deleting-in-an-avl-tree.md)
- [Inserting in a Heap](https://nitinranganath.gitbook.io/data-structures/heap/inserting-in-a-heap.md)
- [Deleting in a Heap](https://nitinranganath.gitbook.io/data-structures/heap/deleting-in-a-heap.md)
- [Heapify](https://nitinranganath.gitbook.io/data-structures/heap/heapify.md)
