Data Structures and Algorithms Made Easy 5th Edition by Karumanchi
Book Details :
Size32.7 MB

Data Structures and Algorithms Made Easy 5th Edition by Karumanchi

Data Structures and Algorithms Made Easy 5th Edition Data Structures and Algorithms Puzzles by Narasimha Karumanchi | PDF Free Download.

Data Structures and Algorithms Contents


  1. Variables
  2. Data Types
  3. Data Structures
  4. Abstract Data Types (ADTs)
  5. What is an Algorithm?
  6. Why the Analysis of Algorithms?
  7. The goal of the Analysis of Algorithms
  8. What is Running Time Analysis?
  9. How to Compare Algorithms
  10. What is the Rate of Growth?
  11. Commonly Used Rates of Growth
  12. Types of Analysis
  13.  Asymptotic Notation
  14. Big-O Notation [Upper Bounding Function]
  15. Omega-Q Notation [Lower Bounding Function]
  16. Theta-Θ Notation [Order Function]
  17. Important Notes
  18. Why is it called Asymptotic Analysis?
  19. Guidelines for Asymptotic Analysis
  20. Simplyfying properties of asymptotic notations
  21. Commonly used Logarithms and Summations
  22. Master Theorem for Divide and Conquer Recurrences
  23. Divide and Conquer Master Theorem: Problems & Solutions
  24. Master Theorem for Subtract and Conquer Recurrences
  25. Variant of Subtraction and Conquer Master Theorem
  26. Method of Guessing and Confirming
  27. Amortized Analysis
  28. Algorithms Analysis: Problems & Solutions

Recursion and Backtracking

  1. Introduction
  2.  What is Recursion?
  3. Why Recursion?
  4. Format of a Recursive Function
  5. Recursion and Memory (Visualization)
  6. Recursion versus Iteration
  7. Notes on Recursion
  8.  Example Algorithms of Recursion
  9. Recursion: Problems & Solutions
  10. What is Backtracking?
  11. Example Algorithms of Backtracking
  12. Backtracking: Problems & Solutions

Linked Lists

  1. What is a Linked List?
  2. Linked Lists ADT
  3. Why Linked Lists?
  4. Arrays Overview
  5. Comparison of Linked Lists with Arrays & Dynamic Arrays
  6. Singly Linked Lists
  7. Doubly Linked Lists
  8. Circular Linked Lists
  9. A Memory-efficient Doubly Linked List
  10.  Unrolled Linked Lists
  11. Skip Lists
  12. Linked Lists: Problems & Solutions


  1. What is a Stack?
  2.  How Stacks are used
  3. Stack ADT
  4. Applications
  5. Implementation
  6. Comparison of Implementations
  7. Stacks: Problems & Solutions


  1. What is a Queue?
  2. How are Queues Used?
  3. Queue ADT
  4. Exceptions
  5. Applications
  6.  Implementation
  7. Queues: Problems & Solutions


  1.  What is a Tree?
  2. Glossary
  3. Binary Trees
  4. Types of Binary Trees
  5. Properties of Binary Trees
  6. Binary Tree Traversals
  7. Generic Trees (N-ary Trees)
  8. Threaded Binary Tree Traversals (Stack or Queue-less Traversals)
  9. Expression Trees
  10. XOR Trees
  11. Binary Search Trees (BSTs)
  12. Balanced Binary Search Trees
  13. AVL(Adelson-Velskii and Landis) Trees
  14. Other Variations on Trees

Priority Queues and Heaps

  1. What is a Priority Queue?
  2. Priority Queue ADT
  3. Priority Queue Applications
  4. Priority Queue Implementations
  5. Heaps and Binary Heaps
  6.  Binary Heaps
  7. Heapsort
  8. Priority Queues [Heaps]: Problems & Solutions

Disjoint Sets ADT

  1. Introduction
  2. Equivalence Relations and Equivalence Classes
  3. Disjoint Sets ADT
  4. Applications
  5. Tradeoffs in Implementing Disjoint Sets ADT
  6.  Fast UNION Implementation (Slow FIND)
  7.  Fast UNION Implementations (Quick FIND)
  8. Summary
  9. Disjoint Sets: Problems & Solutions

Graph Algorithms

  1. Introduction
  2. Glossary
  3. Applications of Graphs
  4. Graph Representation
  5. 9.5 Graph Traversals
  6. Topological Sort
  7. Shortest Path Algorithms
  8. Minimal Spanning Tree
  9. Graph Algorithms: Problems & Solutions


  1. What is Sorting?
  2. Why is Sorting Necessary?
  3. Classification of Sorting Algorithms
  4. Other Classifications
  5. Bubble Sort
  6. Selection Sort
  7. Insertion Sort
  8. Shell Sort
  9. Merge Sort
  10. Heap Sort
  11. Quick Sort
  12. Tree Sort
  13. Comparison of Sorting Algorithms
  14. Linear Sorting Algorithms
  15. Counting Sort
  16. Bucket Sort (or Bin Sort)
  17. Radix Sort
  18. Topological Sort
  19. External Sorting
  20. Sorting: Problems & Solutions


  1. What is Searching?
  2. Why do we need Searching?
  3. Types of Searching
  4.  Unordered Linear Search
  5. Sorted/Ordered Linear Search
  6. Binary Search
  7. Interpolation Search
  8. Comparing Basic Searching Algorithms
  9. Symbol Tables and Hashing
  10. String Searching Algorithms
  11. Searching: Problems & Solutions

Selection Algorithms [Medians]

  1. What is Selection Algorithms?
  2. Selection by Sorting
  3. Partition-based Selection Algorithm
  4. Linear Selection Algorithm - Median of Medians Algorithm
  5. Finding the K Smallest Elements in Sorted Order
  6. Selection Algorithms: Problems & Solutions

Symbol Tables

  1. Introduction
  2. What are Symbol Tables?
  3. Symbol Table Implementations
  4. Comparison Table of Symbols for Implementations
  5. Hashing
  6. What is Hashing?
  7. Why Hashing?
  8. HashTable ADT
  9. Understanding Hashing
  10. Components of Hashing
  11. Hash Table
  12. Hash Function
  13. Load Factor
  14. Collisions
  15. Collision Resolution Techniques
  16. Separate Chaining
  17. Open Addressing
  18. Comparison of Collision Resolution Techniques
  19. 1How Hashing Gets O(1) Complexity?
  20.  Hashing Techniques
  21. Problems for which Hash Tables are not suitable
  22. Bloom Filters
  23. Hashing: Problems & Solutions

String Algorithms

  1. Introduction
  2. String Matching Algorithms
  3. Brute Force Method
  4. Rabin-Karp String Matching Algorithm
  5. String Matching with Finite Automata
  6. KMP Algorithm
  7. Boyer-Moore Algorithm
  8. Data Structures for Storing Strings
  9. Hash Tables for Strings
  10. Binary Search Trees for Strings
  11. Tries
  12. Ternary Search Trees
  13.  Comparing BSTs, Tries and TSTs
  14. Suffix Trees
  15. String Algorithms: Problems & Solutions
  16. Algorithms Design Techniques
  17. Introduction
  18. Classification
  19. Classification by Implementation Method
  20. Classification by Design Method
  21. Other Classifications

Greedy Algorithms

  1. Introduction
  2. Greedy Strategy
  3. Elements of Greedy Algorithms
  4. Does Greedy Always Work?
  5. Advantages and Disadvantages of Greedy Method
  6. Greedy Applications
  7. Understanding Greedy Technique
  8. Greedy Algorithms: Problems & Solutions

Divide and Conquer Algorithms

  1.  Introduction
  2. What is the Divide and Conquer Strategy?
  3. Does Divide and Conquer Always Work?
  4. Divide and Conquer Visualization
  5. Understanding Divide and Conquer
  6.  Advantages of Divide and Conquer
  7. Disadvantages of Divide and Conquer
  8. Master Theorem
  9. Divide and Conquer Applications
  10. Divide and Conquer: Problems & Solutions

Dynamic Programming

  1. Introduction
  2. What is Dynamic Programming Strategy?
  3. Properties of Dynamic Programming Strategy
  4. Can Dynamic Programming Solve All Problems?
  5. Dynamic Programming Approaches
  6. Examples of Dynamic Programming Algorithms
  7. Understanding Dynamic Programming
  8. Longest Common Subsequence
  9. Dynamic Programming: Problems & Solutions

Complexity Classes

  1. Introduction
  2.  Polynomial/Exponential Time
  3. What is a Decision Problem?
  4. Decision Procedure
  5. What is a Complexity Class?
  6. Types of Complexity Classes
  7. Reductions
  8. Complexity Classes: Problems & Solutions

Miscellaneous Concepts

  1. Introduction
  2. Hacks on Bit-wise Programming
  3. Other Programming Questions

Preface to Data Structures and Algorithms PDF

Dear Reader,

Please hold on! I know many people typically do not read the Preface of a book. But I strongly recommend that you read this particular Preface. It is not the main objective of this book to present you with the theorems and proofs on data structures and algorithms.

I have followed a pattern of improving the problem solutions with different complexities (for each problem, you will find multiple solutions with different, and reduced, complexities).

Basically, it’s an enumeration of possible solutions. With this approach, even if you get a new question, it will show you a way to think about the possible solutions. You will find this book useful for interview preparation, competitive exams preparation, and campus interview preparations.

As a job seeker, if you read the complete book, I am sure you will be able to challenge the interviewers.

If you read it as an instructor, it will help you to deliver lectures with an approach that is easy to follow, and as a result, your students will appreciate the fact that they have opted for Computer Science / Information Technology as their degree.

This book is also useful for Engineering degree students and Masters's degree students during their academic preparations. In all the chapters you will see that there is more emphasis on problems and their analysis rather than on theory.

In each chapter, you will first read about the basic required theory, which is then followed by a section on problem sets.

In total, there are approximately 700 algorithmic problems, all with solutions. If you read the book as a student preparing for competitive exams for Computer Science / Information Technology, the content covers all the required topics in full detail.

While writing this book, my main focus was to help students who are preparing for these exams. In all the chapters you will see more emphasis on problems and analysis rather than on theory.

In each chapter, you will first see the basic required theory followed by various problems. For many problems, multiple solutions are provided with different levels of complexity.

We start with the brute force solution and slowly move toward the best solution possible for that problem.

For each problem, we endeavor to understand how much time the algorithm takes and how much memory the algorithm uses. 

Download Data Structures and Algorithms Made Easy 5th Edition by Karumanchi in PDF Format For Free.