1. Introduction To DS
    1. What Is Data Structure
    2. Need Of Data Structure
    3. Advantages Of Data Structure
      1. Efficiency
      2. Reusability
      3. Abstraction
      4. Efficiency of a program depends upon the choice of data structures.
      5. Data structures are reusable.
      6. Data structure is specified by the ADT which provides a level of abstraction.
    4. Types Of Data Structure
      1. Primitive Data Structure
      2. Non-Primitive Data Structure
        1. Linear
          1. Static
          2. Array
          3. Dynamic
          4. Linked List
          5. Stack
          6. Queue
        2. Non-Linear
          1. Tree
          2. Graph
    5. Data Structure Operations
      1. 1.Traversing
      2. 2.Insertion
      3. 3.Deletion
      4. 4.Searching
      5. 5.Sorting
      6. 6.Merging
    6. - group of data elements which provides an efficient way of storing and organising data. - Some examples of Data Structures are arrays, Linked List, Stack, Queue, etc.
  2. Stack & Queue
    1. Stack
      1. What is Stack ?
      2. Operations of Stack
        1. Push()
        2. pop()
        3. peek()/top()
        4. isEmpty()
        5. isFull()
        6. Insert operation is called push operation.
        7. Delete operation is called pop operation.
      3. Ways To Implement Stack
        1. Static
        2. Dynamic
    2. Queue
      1. What is Queue ?
      2. Operation of Queue
        1. enqueue()
        2. dequeue()
        3. Insert operation is called enqueue operation.
        4. delete operation is called enqueue operation.
  3. Linked List
    1. What is Linked List ?
    2. Why use a linked list over an array?
    3. Types of Linked List
      1. Singly Linked List
        1. Operation on SLL
          1. Insertion
          2. Insertion at beginning
          3. Insertion at end of list
          4. insertion after specified node
          5. Deletion
          6. Deletion at beginning
          7. Deletion at the end of list
          8. Deletion after specified node
          9. Traversing
          10. Searching
      2. Doubly Linked List
        1. Operation On DLL
          1. Insertion
          2. Insertion at beginning
          3. Insertion at end of list
          4. insertion after specified node
          5. Deletion
          6. Deletion at beginning
          7. Deletion at the end of list
          8. Deletion after specified node
          9. Traversing
          10. Searching
      3. Circular Linked List
      4. Doubly Circular Linked List
  4. Trees
    1. Basic Terminologies Of Tree DS
      1. Parent Node
      2. Child Node
      3. Root Node
      4. Leaf Node or External Node
      5. Ancestor of a Node
      6. Descendant
      7. Sibling
      8. Level of a node
      9. Internal Node
      10. Neighbour of a Node
      11. Subtree
    2. Basic Properties Of Tree DS
      1. Number Of Edges
      2. Depth of a node
      3. Height of a node
      4. Height of the Tree
      5. Degree of a Node
      6. An edge can be defined as the connection between two nodes.
      7. The depth of a node is defined as the length of the path from the root to that node. Each edge adds 1 unit of length to the path.
      8. The height of a node can be defined as the length of the longest path from the node to a leaf node of the tree.
      9. The height of a tree is the length of the longest path from the root of the tree to a leaf node of the tree.
      10. The total count of subtrees attached to that node is called the degree of the node. The degree of a leaf node must be 0.
    3. Basic Operation Of Tree DS
      1. Create
      2. Insert
      3. Search
      4. Pre-Order Traversal
      5. In-Order Traversal
      6. Post-Order Traversal
      7. create a tree in data structure.
      8. Inserts data in a tree.
      9. Searches specific data in a tree to check it is present or not.
      10. perform Traveling a tree in a pre-order manner in data structure .
      11. perform Traveling a tree in an in-order manner.
      12. perform Traveling a tree in a post-order manner.
    4. Types Of Trees
      1. General Tree
      2. Binary Tree
      3. Balanced Tree
      4. Binary Search Tree
    5. Application Of Tree DS
      1. Spanning Trees
      2. Binary Search Tree
        1. Full Binary tree
        2. Complete Binary tree
        3. Skewed Binary tree
        4. Strictly Binary tree
        5. Extended Binary tree
      3. Storing hierarchical data
      4. Syntax Tree
      5. Trie
      6. Heap
  5. Sorting & Hashing
    1. Sorting Algorithms
      1. Selection Sort
        1. How Selection Sort Works
        2. Maintains Two Sub Arrays
          1. The subarray which already sorted.
          2. The remaining subarray was unsorted.
        3. Stability
          1. Stability: The default implementation is not stable. However, it can be made stable. Please see stable selection sort for details.
        4. Advantages
          1. Simple and easy to understand.
          2. Preserves the relative order of items with equal keys which means it is stable.
          3. Works well with small datasets.
          4. It is adaptable to various types of data types.
          5. Selection sort is an in-place sorting algorithm, which means it does not require any additional memory to sort the list.
      2. Bubble Sort
        1. How it Works
        2. Solving Method
          1. Run a nested for loop to traverse the input array using two variables i and j, such that 0 ≤ i < n-1 and 0 ≤ j < n-i-1
          2. If arr[j] is greater than arr[j+1] then swap these adjacent elements, else move on
          3. Print the sorted array
        3. Stability
          1. Yes, the bubble sort algorithm is stable.
        4. Advantages
          1. Bubble sort is easy to understand and implement.
          2. It does not require any additional memory space.
          3. It’s adaptability to different types of data.
      3. Insertion Sort
        1. How It Works
        2. Stability
          1. Yes, insertion sort is a stable sorting algorithm.
      4. Merge Sort
        1. How it works
        2. Stability
          1. Yes, merge sort is stable.
        3. Advantages
          1. Merge sort has a time complexity of O(n log n), which means it is relatively efficient for sorting large datasets.
          2. Merge sort is a stable sort, which means that the order of elements with equal values is preserved during the sort.
          3. It is easy to implement thus making it a good choice for many applications.
      5. Quick Sort
        1. How It Works
        2. Stability
          1. The default implementation is not stable. However any sorting algorithm can be made stable by considering indexes as comparison parameter.
        3. Advantages
          1. It is a divide-and-conquer algorithm that makes it easier to solve problems.
          2. It is efficient on large data sets.
          3. It is a stable sort, meaning that if two elements have the same key, their relative order will be preserved in the sorted output.
          4. It has a low overhead, as it only requires a small amount of memory to function.
  6. Graph