Data Structures with Python: Get familiar with the common Data Structures and Algorithms in Python

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Develop a strong foundation in Data Structures and Algorithms and become a skilled programmer Description Data structures are a way of organizing and storing data in a computer so that it can be accessed and manipulated efficiently. If you want to become an accomplished programmer and master this subject, then this book is for you. The book starts by introducing you to the fascinating world of data structures and algorithms. This book will help you learn about different algorithmic techniques such as Dynamic programming, Greedy algorithms, and Backtracking, and their applications in solving various computational problems. The book will then teach you how to analyze the complexity of Recursive algorithms. Moving on, the book will help you get familiar with the concept of Linked lists, which is an important foundation for understanding other data structures, such as Stacks and Queues, which are covered in detail later in this book. The book will also teach you about advanced data structures such as Trees and Graphs, their different types, and their applications. Towards the end, the book will teach you how to use various Sorting, Searching Selection and String algorithms. By the end of the book, you will get a comprehensive and in-depth understanding of various data structures and algorithms and their applications in solving real-world computational problems efficiently. What you will learn ● Get familiar with the fundamentals of data structures such as arrays, linked lists, stacks, and queues. ● Understand the basics of algorithm analysis and complexity theory. ● Explore different approaches to the algorithm design, such as divide-and-conquer, dynamic programming, and greedy algorithms. Who this book is for The book is aimed at Computer Science students, Software Engineers, and anyone interested in learning about data structures and algorithms

Author(s): Dr. Harsh Bhasin
Publisher: BPB Publications
Year: 2023

Language: English
Pages: 404

1. Introduction to Data Structures
Structure
Objectives
Introduction
Data types
Types of data structures
Game of clones
The game of clones revisited
Conclusion
Multiple choice questions
Theory-based questions
Application-based questions
2. Design Methodologies
Structure
Objectives
Greedy approach
Divide and conquer
Backtracking and dynamic programming
Longest common sub-sequence
Conclusion
Multiple choice questions
Programming/application
Further references
3. Recursion
Structure
Objectives
Exponentiation
Tower of Hanoi
Rabbit problem
Generating binary numbers
Lists
Numbers
Conclusion
Multiple choice questions
Programming
Further references
4. Arrays
Structure
Objectives
Introduction
Memory map
Address in column-major
Inserting and deleting
Operations on arrays
Linear search
Problems
Conclusion
Multiple choice questions
Programming
5. Linked List
Structure
Objectives
One-way linked list
Traversing
Insertion and deletion
Two-way
Traversing
Insertion and deletion
Cyclic list
Stacks and Queues
Reversing a linked list
Concatenate lists
Check cycle
Conclusion
Multiple choice questions
Theory
Problems
6. Stacks
Structure
Objectives
Introduction
Implementing two stacks using a single list
Types and uses
Reversing a string
Expressions
Evaluation of postfix
Infix to postfix
Infix to prefix
Problems
Conclusion
Multiple Choice Questions
Problems
7. Queues
Structure
Objectives
Introduction
Algorithm and implementation
Circular queue
Doubly-ended queue: DEQueue
Generating binary numbers using a queue
Stack using two queues
Stack from a single queue
Scheduling
Conclusion
Multiple Choice Questions
Problems
8. Trees-I
Introduction
Structure
Objectives
Definition and terminology
Representation of a Binary Tree
Traversal
Post-order traversal
Pre-order traversal
Binary search tree
Insertion in a BST
Deletion
Leftmost node
Rightmost node
Conclusion
Multiple choice questions
Numerical/problems
9. Trees-II
Structure
Objectives
AVL trees
Insertion
Insertion in an AVL tree
Deletion from an AVL Tree
B Trees
Conclusion
Multiple choice questions
Theory
Numericals
10. Priority Queues
Structure
Objectives
Introduction to priority queues
Structure of heap
Operations
Inserting an element in a heap
Deletion
Heap sort
Problems
Conclusion
Multiple choice questions
Programming
Further references
11. Graphs
Introduction
Structure
Objectives
Representation
Traversals
Depth First Search
Breadth First Search
Topological sort
Spanning tree
Kruskal’s algorithm
Conclusion
Multiple choice questions
Numerical/application based
Programming
12. Sorting
Structure
Objectives
Bubble sort
Comb sort
Selection sort
Insertion sort
Radix sort
Counting sort
Merge and merge sort
Partition and quick sort
Conclusion
Illustrations
Multiple choice questions
Theory
13. Median and Order Statistics
Introduction
Structure
Objectives
Introduction to median and order statistics
Median of medians
Median using heaps
Median using insertion sort
Median using partition
Conclusion
Solved problems
Multiple choice questions
Applications/implementation
Bibliography
14. Hashing
Structure
Objectives
Hash tables
Storing information
Sorted sequential array
Linked list representation
AVL trees
Hashing
Hash function
Collision resolution
Selecting hash function
Collisions
Collision resolution
Linear probing
Quadratic probing
Separate chaining
Solved problems
Conclusion
Multiple choice questions
Theory
Problems
Programming
15. String Matching
Structure
Objectives
Introduction to string-matching
Brute force method
Rabin Karp
Knuth–Morris–Pratt algorithm
KMP method
Conclusion
Multiple choice questions
Theory/applications
Find errors/special cases
References
Appendix 1: All Pairs Shortest Path
Introduction
All Pairs Shortest Path
Appendix 2: Tree Traversals
Introduction
In-Order Traversal
Pre-order traversal
Post-order traversal
Appendix 3: Dijkstra’s Shortest Path Algorithm
Introduction
Dijkstra’s shortest path algorithm
Appendix 4: Supplementary Questions
Arrays: Level 0
Arrays: Level 1
Stacks
Linked List
Trees
Graphs
Application based
Solved problems
Multiple choice questions
Applications/implementation
Bibliography
14. Hashing
Structure
Objectives
Hash tables
Storing information
Sorted sequential array
Linked list representation
AVL trees
Hashing
Hash function
Collision resolution
Selecting hash function
Collisions
Collision resolution
Linear probing
Quadratic probing
Separate chaining
Solved problems
Conclusion
Multiple choice questions
Theory
Problems
Programming
15. String Matching
Structure
Objectives
Introduction to string-matching
Brute force method
Rabin Karp
Knuth–Morris–Pratt algorithm
KMP method
Conclusion
Multiple choice questions
Theory/applications
Find errors/special cases
References
Appendix 1: All Pairs Shortest Path
Introduction
All Pairs Shortest Path
Appendix 2: Tree Traversals
Introduction
In-Order Traversal
Pre-order traversal
Post-order traversal
Appendix 3: Dijkstra’s Shortest Path Algorithm
Introduction
Dijkstra’s shortest path algorithm
Appendix 4: Supplementary Questions
Arrays: Level 0
Arrays: Level 1
Stacks
Linked List
Trees
Graphs
Application based