# 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)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information, you can query the documentation dynamically by asking a question.
Perform an HTTP GET request on a page URL with the `ask` query parameter:
```
GET https://nitinranganath.gitbook.io/data-structures/master.md?ask=<question>
```
The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.
Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
