We use cookies to enhance your experience on our website. By continuing to use our website, you are agreeing to our use of cookies. You can change your cookie settings at any time. Find out more

Data Structures Using C

Second Edition

Reema Thareja

October 2014

ISBN: 9780198099307

560 pages

Price: £12.99



The second edition of Data Structures Using C is designed to serve as a textbook for undergraduate engineering students of computer science as well as postgraduate students of computer applications. It provides a comprehensive coverage of the concepts of data structures and their implementation using C language.

  • Provides a brush-up of C basics before delving into the analysis of data structures
  • Integrates theoretical aspects of data structures with practical implementation of algorithms using tested C programs
  • Provides analysis of all major algorithms in terms of their running times
  • Makes use of numerous algorithms, programs, and illustrations to explain the concepts
  • Provides numerous end-chapter exercises varying widely in type and difficulty

About the Author(s)

Reema Thareja, Assistant Professor, Department of Computer Science, Shyama Prasad Mukherjee College for Women, University of Delhi

Reema Thareja is Assistant Professor at the Department of Computer Science, Shyama Prasad Mukherjee College for Women, University of Delhi. She has completed MCA (Software Engineering) and M Phil (Computer Science). She specializes in programming languages, OS, microprocessors, DBMS, multimedia, and web technologies and is currently pursuing research in Requirements Engineering approach to improve Data Warehouse Quality.

Table of Contents

    1. Introduction to C
    1.1 Introduction
    1.2 Identifiers and Keywords
    1.3 Basic Data Types
    1.4 Variables And Constants
    1.5 Writing the First C Program
    1.6 Input and Output Functions
    1.7 Operators and Expressions
    1.8 Type Conversion and Typecasting
    1.9 Control Statements
    1.10 Functions
    1.11 Pointers
    2. Introduction to Data Structures and Algorithms
    2.1 Basic Terminology
    2.2 Classification of Data Structures
    2.3 Operations on Data Structures
    2.4 Abstract Data Type
    2.6 Different Approaches to Designing an Algorithm
    2.7 Control Structures Used In Algorithms
    2.8 Time and Space Complexity
    2.9 Big O Notation
    2.10 Omega Notation (?)
    2.11 Theta Notation (Q)
    2.12 Other Useful Notations
    3. Arrays
    3.1 Introduction
    3.2 Declaration of Arrays
    3.3 Accessing the Elements of an Array
    3.4 Storing Values in Arrays
    3.5 Operations on Arrays
    3.6 Passing Arrays to Functions
    3.7 Pointers And Arrays
    3.8 Arrays of Pointers
    3.9 Two-Dimensional Arrays
    3.10 Operations On Two-Dimensional Arrays
    3.11 Passing two-dimensional arrays to functions
    3.12 Pointers And two-dimensional Arrays
    3.13 Multi-Dimensional Arrays
    3.14 Pointers and Three-Dimensional Arrays
    3.15 Sparse Matrices
    3.16 Applications of Arrays
    4. Strings
    4.1 Introduction
    4.2 Operations on Strings
    4.3 Arrays of Strings
    4.4 Pointers and Strings
    5. Structures and Unions
    5.1 Introduction
    5.2 Nested Structures
    5.3 Arrays of Structures
    5.4 Structures And Functions
    5.5 Self-Referential Structures
    5.6 Unions
    5.7 Arrays of Union Variables
    5.8 Unions Inside Structures
    6. Linked Lists
    6.1 Introduction
    6.2 Singly Linked Lists
    6.3 Circular Linked Lists
    6.4 Doubly Linked Lists
    6.5 Circular Doubly Linked Lists
    6.6 Header Linked Lists
    6.7 Multi-Linked Lists
    6.8 Applications of Linked Lists
    7. Stacks
    7.1 Introduction To Stacks
    7.2 Array Representation of Stacks
    7.3 Operations on a Stack
    7.4 Linked Representation of Stacks
    7.5 Operations on A Linked Stack
    7.6 Multiple Stacks
    7.7 Applications of Stacks
    8. Queues
    8.1 Introduction to Queues
    8.2 Array Representation of Queues
    8.3 Linked Representation of Queues
    8.4 Types of Queues
    8.5 Applications of Queues
    9. Trees
    9.1 Introduction
    9.2 Types of Trees
    9.3 Creating a Binary Tree from a General Tree
    9.4 Traversing a Binary Tree
    9.5 Huffman's Tree
    9.6 Applications of Trees
    10. Efficient Binary Trees
    10.1 Binary Search Trees
    10.2 Operations on Binary Search Trees
    10.3 Threaded Binary Trees
    10.4 AVL Trees
    10.5 Red-Black Trees
    10.6 Splay Trees
    11. Multi-way Search Trees
    11.1 Introduction to M-Way Search Trees
    11.2 B Trees
    11.3 B+ Trees
    11.4 2-3 Trees
    11.5 Trie
    12. Heaps
    12.1 Binary Heaps
    12.2 Binomial Heaps
    12.3 Fibonacci Heaps
    12.4 Comparison of Binary, Binomial,and Fibonacci Heaps
    12.5 Applications of Heaps
    13. Graphs
    13.1 Introduction
    13.2 Graph Terminology
    13.3 Directed Graphs
    13.4 Bi-Connected Components
    13.5 Representation of Graphs
    13.6 Graph Traversal Algorithms
    13.7 Topological Sorting
    13.8 Shortest Path Algorithms
    13.9 Applications of Graphs
    14. Searching and Sorting
    14.1 Introduction To Searching
    14.2 Linear Search
    14.3 Binary Search
    14.4 Interpolation Search
    14.5 Jump Search
    14.6 Introduction To Sorting
    14.7 Bubble Sort
    14.8 Insertion Sort
    14.9 Selection Sort
    14.10 Merge Sort
    14.11 Quick Sort
    14.12 Radix Sort
    14.13 Heap Sort
    14.14 Shell Sort
    14.15 Tree Sort
    14.16 Comparison of Sorting Algorithms
    14.17 External Sorting
    15. Hashing and Collision
    15.1 Introduction
    15.2 Hash Tables
    15.3 Hash Functions
    15.4 Different Hash Functions
    15.5 Collisions
    15.6 Pros and Cons of Hashing
    15.7 Applications of Hashing
    16. Files and Their Organization
    16.1 Introduction
    16.2 Data Hierarchy
    16.3 File Attributes
    16.4 Text and Binary Files
    16.5 Basic File Operations
    16.6 File Organization
    16.7 Indexing