Data Structures and Algorithms Using C++
Data Structures and Algorithms Using C++ helps students to master data structures, their algorithms and the analysis of complexities of these algorithms. Each chapter includes an Abstract Data Type (ADT) and applications along with a detailed explanation of the topics. This book meets the requiremen...
Autor principal: | |
---|---|
Otros Autores: | |
Formato: | Libro electrónico |
Idioma: | Inglés |
Publicado: |
:
Pearson India
1900.
|
Edición: | [First edition] |
Materias: | |
Ver en Biblioteca Universitat Ramon Llull: | https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009820411306719 |
Tabla de Contenidos:
- Cover
- Data Structures and Algorithms Using C++
- Copyright
- Contents
- About the Authors
- Preface
- Acknowledgements
- Chapter 1 Introduction to C++
- 1.1 Introduction
- 1.2 Class Overview
- 1.2.1 Class
- 1.2.2 Objects
- 1.2.3 Class Members
- 1.3 I/O Streams
- 1.4 Access Control
- 1.5 Class Scope
- 1.6 Static Class Members
- 1.6.1 Static Member Variables
- 1.6.2 Static Member Function
- 1.6.3 Static Object
- 1.7 Functions
- 1.7.1 Parameter Passing Methods
- 1.7.2 Inline Functions
- 1.7.3 The friend Function
- 1.7.4 Function Overloading
- 1.8 The this Pointer
- 1.9 Dynamic Memory Allocation and Deallocation
- 1.9.1 The new Operator
- 1.9.2 The delete Operator
- 1.10 Exception Handling
- Summary
- Exercises
- Chapter 2 Object Oriented Concepts
- 2.1 Goals and Principles
- 2.1.1 Object Oriented Design Goals
- 2.1.2 Object Oriented Design Principles
- 2.2 Constructors and Destructors
- 2.2.1 Constructors
- 2.2.2 Constructor Overloading
- 2.2.3 Destructors
- 2.3 Operator Overloading
- 2.3.1 Overloading the Plus (+) Operator
- 2.3.2 Overloading the Minus (-) Operator
- 2.3.3 Overloading Unary Operators
- 2.3.4 Postfix Form of Overloading the Unary Operator ++
- 2.3.5 Prefix Form of Overloading the Unary Operator
- 2.3.6 Postfix Form of Overloading the Unary Operator
- 2.4 Inheritance
- 2.4.1 Base Class Access Control
- 2.4.2 Types of Inheritance
- 2.4.3 Reasons for the Usage of Inheritance
- 2.4.4 Advantages
- 2.4.5 Disadvantages
- 2.4.6 Delegation
- 2.5 Polymorphism
- 2.5.1 Virtual Functions
- 2.5.2 Pure Virtual Functions
- 2.6 Abstract Classes
- 2.7 Generic Programming with Templates
- 2.7.1 Function Templates
- 2.7.2 Class Templates
- 2.8 Recursion
- Summary
- Exercises
- Chapter 3 Algorithms
- 3.1 Introduction
- 3.2 Basic Notations
- 3.2.1 Pseudo Code.
- 3.3 Types of Algorithms
- 3.3.1 Brute Force Algorithms
- 3.3.2 Divide and Conquer Algorithms
- 3.3.3 Dynamic Programming Algorithms
- 3.3.4 Greedy Algorithms
- 3.3.5 Branch and Bound Algorithms
- 3.3.6 Recursive Algorithms
- 3.3.7 Back Tracking Algorithms
- 3.3.8 Randomized Algorithms
- 3.3.9 Hill Climbing Algorithms
- 3.4 Performance Analysis
- 3.4.1 Properties of the Best Algorithms
- 3.5 Space Complexity
- 3.5.1 Instruction Space
- 3.5.2 Text Section of a Program
- 3.5.3 Data Space
- 3.5.4 Stack Space
- 3.5.5 Calculating the Instruction Space
- 3.5.6 Calculating the Data Space
- 3.5.7 Size of Data Section
- 3.5.8 Size of Rodata Section
- 3.5.9 Size of bss Section
- 3.6 Apriori Analysis
- 3.7 Asymptotic Notation
- 3.7.1 Big oh Notation (O)
- 3.7.2 Omega Notation (Ω)
- 3.7.3 Theta Notation (θ)
- 3.7.4 Little oh Notation(o)
- 3.8 Time Complexity
- 3.8.1 Time Complexity Analysis of Bubble Sort
- 3.8.2 Time Complexity Analysis of Selection Sort
- 3.9 Worst Case, Average Case and Best Case Complexity
- 3.9.1 Worst Case
- 3.9.2 Average Case
- 3.9.3 Best Case
- Summary
- Exercises
- Chapter 4 Arrays
- 4.1 Introduction
- 4.1.1 Array
- 4.2 Array Types
- 4.2.1 Single-dimensional Array
- 4.2.2 Multi-dimensional Array
- 4.2.3 N-dimensional Array
- 4.3 Array Representation
- 4.4 Initializing Arrays
- 4.5 Accessing Values of an Array
- 4.6 Array Operations
- 4.6.1 Traversing
- 4.6.2 Insertion
- 4.6.3 Deletion
- 4.6.4 Sorting
- 4.6.5 Searching
- 4.7 Arrays as Parameters
- 4.8 Character Sequences
- 4.9 Applications
- Summary
- Exercises
- Chapter 5 Linked List
- 5.1 Introduction
- 5.2 Representation of Linked List in Memory
- 5.2.1 Static Representation
- 5.2.2 Dynamic Representation
- 5.3 Singly Linked List
- 5.3.1 Operations
- 5.4 Circular Linked List
- 5.4.1 Merging of Two Circular Lists.
- 5.5 Doubly Linked Lists
- 5.5.1 Representation of Doubly Linked List
- 5.5.2 Operations
- 5.6 Comparison of Various Linked Lists
- 5.6.1 Linked Lists Versus Arrays
- 5.7 Applications
- 5.7.1 Polynomial Manipulation
- Summary
- Exercises
- Chapter 6 Stacks
- 6.1 Definition
- 6.2 Representation of a Stack
- 6.2.1 Array Representation of a Stack
- 6.2.2 Linked Representation of a Stack
- 6.3 Operations on Stack
- 6.3.1 Array Implementation of a Stack
- 6.3.2 Linked Implementation of a Stack
- 6.4 Applications of Stacks
- 6.4.1 Expression Evaluation
- 6.4.2 Postfix Evaluation
- 6.4.3 Recursion
- 6.4.4 Balancing of the Matching Parenthesis
- Summary
- Excercises
- Chapter 7 Queues
- 7.1 Introduction
- 7.2 Representation of a Queue
- 7.2.1 Array Representation
- 7.2.2 Linked Representation
- 7.3 Operations on a Queue
- 7.3.1 Enqueue and Deque Using Arrays
- 7.3.2 Enqueue and Deque Using Linked List
- 7.4 Circular Queues
- 7.4.1 Operations on Circular Queue
- 7.5 Deque
- 7.5.1 Operations on a Deque
- 7.6 Applications of Queues
- 7.6.1 Simulation of Time-sharing System
- 7.6.2 Queue ADT
- Summary
- Exercises
- Chapter 8 Dictionaries
- 8.1 Dictionaries
- 8.2 Linear List Representation
- 8.3 Skip Lists Representation
- 8.3.1 Operations
- 8.3.2 Searching
- 8.3.3 Insertion
- 8.3.4 Deletion
- 8.4 Hash Table
- 8.4.1 Hash Functions
- 8.5 Collisions
- 8.5.1 Separate Chaining
- 8.5.2 Open Addressing
- 8.6 Comparison of Chaining and Open Addressing
- 8.7 Applications
- 8.8 Dictionary ADT
- Summary
- Exercises
- Chapter 9 Trees and Binary Trees
- 9.1 Introduction
- 9.2 Terminologies
- 9.3 Representation of a Tree
- 9.4 Binary Trees
- 9.5 Representation of Binary Trees
- 9.5.1 Array Representation of a Binary Tree
- 9.5.2 Linked Representation of Binary Trees
- 9.6 Binary Tree Operations.
- 9.7 Binary Tree Traversals
- 9.7.1 Inorder Traversal (LVR)
- 9.7.2 Preorder Traversal (VLR)
- 9.7.3 Postorder Traversal (LRV)
- 9.7.4 Level-order Traversal
- 9.8 Conversion of a Tree into a Binary Tree
- 9.9 Threaded Binary Trees
- 9.9.1 Linked Representation of a Threaded Binary Tree
- 9.10 Applications of Binary Trees
- 9.10.1 Traversal of an Expression Tree
- 9.10.2 Operations on Expression Trees
- 9.11 ADT of Binary Tree
- Summary
- Exercises
- Chapter 10 Graphs
- 10.1 Introduction
- 10.2 Basic Terminology
- 10.3 Representation of Graphs
- 10.3.1 Sequential Representation of Graphs
- 10.3.2 Linked Representation of Graphs
- 10.4 Operations on Graphs
- 10.5 Graph Traversals
- 10.5.1 Breadth First Traversal
- 10.5.2 Depth First Traversal
- 10.6 Applications
- 10.7 Graph ADT
- Summary
- Exercises
- Chapter 11 Priority Queues
- 11.1 Introduction
- 11.2 Priority Queue ADT
- 11.3 Priority Queue Implementation Using Heaps
- 11.3.1 Priority Queue Interface
- 11.3.2 Min Heap-Insertion
- 11.3.3 Min Heap-Deletion
- 11.3.4 Max Heap-Insertion
- 11.3.5 Max Heap-Deletion
- 11.4 Applications
- 11.4.1 Job Scheduling
- 11.5 External Sorting
- 11.5.1 Polyphase Merge
- 11.5.2 Multiway Merge
- Summary
- Exercises
- Chapter 12 Binary Search Trees and AVL Trees
- 12.1 Binary Search Trees
- 12.2 Representation of a Binary Search Tree
- 12.3 Operations on Binary Search Trees
- 12.3.1 Searching
- 12.3.2 Insertion
- 12.3.3 Deletion
- 12.3.4 Disadvantages of Binary Search Tree
- 12.4 AVL Trees
- 12.5 Operation of AVL Search Trees
- 12.5.1 Searching
- 12.5.2 Insertion
- 12.5.3 Deletion
- 12.6 Applications
- Summary
- Exercises
- Chapter 13 Multiway Trees and B Trees
- 13.1 Introduction
- 13.2 Representation of a Node Structure
- 13.3 Operations on m-Way Search Trees
- 13.3.1 Searching
- 13.3.2 Insertion.
- 13.3.3 Deletion
- 13.3.4 Drawbacks of m-Way Search Trees
- 13.4 B Trees
- 13.5 Operations on B Trees
- 13.5.1 Searching
- 13.5.2 Insertion
- 13.5.3 Deletion
- 13.6 Height of B Trees
- 13.7 Variations of B Tree
- 13.7.1 B* Tree
- 13.7.2 B+ Tree
- 13.8 Applications
- 13.8.1 Databases
- Summary
- Exercises
- Chapter 14 Red-Black Trees and Splay Trees
- 14.1 Introduction
- 14.2 Representation of a Red-Black Tree
- 14.3 Operations
- 14.3.1 Searching
- 14.3.2 Insertion
- 14.3.3 Deletion
- 14.4 Splay Trees
- 14.4.1 Splay Rotations
- 14.4.2 Amortized Analysis
- 14.5 Applications
- Summary
- Exercises
- Chapter 15 Pattern Matching and Tries
- 15.1 Introduction
- 15.2 Terminology
- 15.3 Pattern Matching Algorithms
- 15.3.1 Fixed Pattern Matching Algorithms
- 15.3.2 Regular Expression Pattern Matching
- 15.4 Fixed Pattern Matching Algorithms
- 15.4.1 Brute Force Pattern Matching Algorithm
- 15.4.2 Th e Boyer-Moore Algorithm
- 15.4.3 Knuth-Morris-Pratt Algorithm (KMP)
- 15.5 Applications of Pattern Matching Algorithms
- 15.6 Tries
- 15.6.1 Standard Tries
- 15.6.2 Compressed Tries
- 15.6.3 Suffix Tries
- 15.7 Applications of Tries
- Summary
- Exercises
- Chapter 16 Sorting and Searching
- 16.1 Sorting
- 16.1.1 Bubble Sort
- 16.1.2 Insertion Sort
- 16.1.3 Selection Sort
- 16.1.4 Quick Sort
- 16.1.5 Merge Sort
- 16.1.6 Shell Sort
- 16.1.7 Radix Sort
- 16.1.8 Heap Sort
- 16.2 Searching
- 16.2.1 Linear Search or Sequential Search
- 16.2.2 Binary Search
- 16.2.3 Fibonacci Search
- Summary
- Exercises
- Index.