Data Structures and Algorithms in C and Python
Chandan Banerjee and Atanu Das
Price
795
ISBN
9788195400904
Language
English
Pages
660
Format
Paperback
Dimensions
180 x 240 mm
Year of Publishing
2023
Territorial Rights
World
Imprint
Universities Press
Catalogues

Data structure is a special way of organizing and storing data in the computer memory so that data can be accessed more efficiently. It is indispensable for the proper functioning of many computer algorithms. This book discusses Data Structures and Algorithms, laying emphasis on the concepts and covering the syllabus of B.E., B.Tech., B.Sc., BCA and MCA courses offered in nearly all Indian Universities.

Spread across 14 chapters, the book focuses on both theory and practical aspects of the subject with illustrative examples and academic rigor. It provides comprehensive coverage of all necessary algorithms and their implementations using both C and Python within a single book.

Chandan Banerjee is a Ph.D. in Engineering. He is Head of the Department and Professor, Department of IT, Netaji Subhash Engineering College (MAKAUT-WB), Kolkata, India.

Atanu Das is a Ph.D. in Engineering. He is Head, Department of MCA, Netaji Subhash Engineering College (MAKAUT-WB), Kolkata, India. Earlier, he was Head, Department of CSE, in the same college.

List of Algorithms and Pseudocodes
List of C Programs
List of Python Programs
Preface
About the Authors


Chapter 1: Introduction to Data Structures


1.1 Introduction
1.2 Data Types
1.3 Dynamic Memory Allocation
1.4 Classification of Data Structures
1.5 Operations on Data Structures
1.6 Algorithms and Data Structures
1.7 Choosing Appropriate Data Structures
1.8 File Organization
1.9 Data-related Other Subjects
1.10 C and Python for Program Development
1.11 Programming Paradigms in Data Structure
Quick Recap
Review Questions
Case Studies


Chapter 2: Python Digest

2.1 Introduction
2.2 Features of Python
2.3 Advantages of Python
2.4 String and Variables
2.5 User Input
2.6 Python Operators
2.7 Lists
2.8 Sets
2.9 Tuples
2.10 Dictionaries
2.11 Conditional Statements (if, else, elif)
2.12 Iteration Loops (while and for)
2.13 Loop Control Statements (break, continue, pass)
2.14 Functions
2.15 Modules
2.16 Packages
2.17 Files
2.18 Exceptions
2.19 Classes and Objects
2.20 Functional Programming in Python
2.21 Numpy Array in Python
2.22 Series and DataFrames in Pandas
Quick Recap
Review Questions
Case Studies
Lab Exercises


Chapter 3: Algorithms and Complexity Analysis

3.1 Introduction
3.2 Complexity of Algorithms
3.3 Asymptotic Notations
Quick Recap
Review Questions
Case Studies


Chapter 4: Array

4.1 Introduction
4.2 Array Operations Using Static Memory Allocation
4.3 Array Operations Using Dynamic Memory Allocation
4.4 Applications of Array Using Static Memory Allocations
4.5 Applications of Array Using Dynamic Memory Allocations
4.6 Representation of 2D Arrays in Computer Memory
Quick Recap
Review Questions
Case Studies
Lab Exercises

Chapter 5: Linked List

5.1 Introduction
5.2 Classification of Linked Lists
5.3 Operations on Singly Linked List
5.4 Operations on Circular Linked List
5.5 Operations on Doubly Linked List
5.6 Traversing in Linked List
5.7 Memory Allocation and Garbage Collection
5.8 Sparse Matrix Representation Using Array and Linked List
5.9 Polynomials Representation Using Linked List
Quick Recap
Review Questions
Case Studies
Lab Exercises

Chapter 6: Stack

6.1 Introduction
6.2 Design and Implementation of Stack
6.3 Applications of Stack
Quick Recap
Review Questions
Case Studies
Lab Exercises


Chapter 7: Queue

7.1 Introduction
7.2 Design and Implementation of Queue
7.3 Double-ended Queue or Deque
7.4 Priority Queue
7.5 Implement Queue Using Two Stacks with the Help of Arrays
Quick Recap
Review Questions
Case Studies
Lab Exercises


Chapter 8: Recursion

8.1 Introduction
8.2 GCD of Two Numbers Using Recursion
8.3 Factorial of a Number Using Recursion
8.4 Fibonacci Series Using Recursion
8.5 Ackermann Function Using Recursion
8.6 Pascal’s Triangle Representation Using Recursion
8.7 Solving the Tower of Hanoi Problem Using Recursion
8.8 Sorting a Stack Using Recursion
8.9 N-Queens Problem Using Recursion
8.10 Dynamic Programming and Memoization
8.11 Some Solved Examples of Recursion
Quick Recap
Review Questions
Case Studies
Lab Exercises


Chapter 9: Trees

9.1 Introduction
9.2 Characteristics of Binary Trees
9.3 Binary Tree Traversal Algorithms
9.4 Construction of a Binary Tree Using Tree Traversal
9.5 Threaded Binary Tree
9.6 Binary Search Tree (BST)
9.7 AVL Tree or Height-balanced Tree
9.8 B Tree (Balanced Tree)
Quick Recap
Review Questions
Case Studies
Lab Exercises

Chapter 10: Graphs

10.1 Introduction
10.2 Representation of Graph
10.3 Applications of Graph
10.4 Traversing a Graph
10.5 Spanning Tree
10.6 Dijkstra’s Algorithm for Shortest-path Evaluation
10.7 Grid Path Problem
10.8 Longest Common Subsequence (LCS)
Quick Recap
Review Questions
Case Studies
Lab Exercises


Chapter 11: Sorting

11.1 Introduction
11.2 Bubble Sort
11.3 Insertion Sort
11.4 Selection Sort
11.5 Quick Sort
11.6 Merge Sort
11.7 Heap Sort
11.8 Radix Sort
11.9 Comparison of Time Complexity of Sorting Methods
Quick Recap
Review Questions
Case Studies
Lab Exercises


Chapter 12: Searching

12.1 Introduction
12.2 Linear Search
12.3 Binary Search
12.4 Interpolation Search
Quick Recap
Review Questions
Case Studies
Lab Exercises


Chapter 13: Hashing

13.1 Introduction
13.2 Popular Hashing Methods
13.3 Collision Resolution Techniques
13.4 Implementations of Collision Resolution Techniques
13.5 Analysis of Hashing Techniques and Load Factor
13.6 Rehashing Technique
Quick Recap
Review Questions
Case Studies
Lab Exercises


Chapter 14: File Organization

14.1 Introduction
14.2 Classification of File Organizations
14.3 File Operations
14.4 Importance of File Organization
14.5 File Read–Write–Append Operations with C and Python
14.6 File Organization and Operating System
Quick Recap
Review Questions
Case Studies
Lab Exercises


Index