Data Structure and Algorithm with C++
Master your coding skills with C++ programming for Data Structures. Get ready to ace those technical rounds of job interviews.
(DS-ALGO-CPLUS.AP1) / ISBN : 978-1-64459-444-5About This Course
The Data Structure and Algorithm with C++ course offers a comprehensive learning of the advanced topics along with a rich collection of practice exercises for deeper understanding. Besides learning the fundamentals of basic data structures like arrays, linked lists, stacks, and queues, you’ll also be working with advanced data structures trees (binary, binary search, AVL, and heap), graphs, and hash tables. Learn how to measure the efficiency of an algorithm using time(how long it takes) and space(space/memory) complexity metrics. For the practical implications, you’ll be sorting algorithms (bubble, insertion, selection, merge, quick, heap) and searching techniques (linear, binary). The course further extends to dynamic programming, greedy algorithms, and advanced tree structures like B-trees. Get access to the C++ Standard Template Library (STL) that features containers (vector, list, deque, stack, queue, priority queue, map, set) and iterators. The course includes exercises and solutions that are useful for both students and professionals. It aims to help you prepare for technical job interviews that typically involve coding questions.
Skills You’ll Get
- Implementing various data structures including arrays, linked lists, stacks, queues, trees, graphs, and hash tables
- Optimizing algorithms through time and space complexities
- Enhanced problem-solving skills
- Sorting, searching, and computing via algorithms
- Enhanced C++ programming skills
- Using the Standard Template Library (STL)
- Gain confidence to answer coding questions during technical interviews
- Applying data structures and algorithms for analytical thinking.
Get the support you need. Enroll in our Instructor-Led Course.
Interactive Lessons
14+ Interactive Lessons | 125+ Exercises | 56+ Quizzes | 53+ Flashcards | 53+ Glossary of terms
Gamified TestPrep
37+ Pre Assessment Questions | 37+ Post Assessment Questions |
Preface
- Purpose/Goals
- Approach
- Summary of the Most Significant Changes in the Fourth Edition
- Overview
- Exercises
Programming: A General Overview
- What’s This Course About?
- Mathematics Review
- A Brief Introduction to Recursion
- C++ Classes
- C++ Details
- Templates
- Using Matrices
- Summary
- Exercises
- References
Algorithm Analysis
- Mathematical Background
- Model
- What to Analyze
- Running-Time Calculations
- Summary
- Exercises
- References
Lists, Stacks, and Queues
- Abstract Data Types (ADTs)
- The List ADT
- vector and list in the STL
- Implementation of vector
- Implementation of list
- The Stack ADT
- The Queue ADT
- Summary
- Exercises
Trees
- Preliminaries
- Binary Trees
- The Search Tree ADT—Binary Search Trees
- AVL Trees
- Splay Trees
- Tree Traversals (Revisited)
- B-Trees
- Sets and Maps in the Standard Library
- Summary
- Exercises
- References
Hashing
- General Idea
- Hash Function
- Separate Chaining
- Hash Tables without Linked Lists
- Rehashing
- Hash Tables in the Standard Library
- Hash Tables with Worst-Case O(1) Access
- Universal Hashing
- Extendible Hashing
- Summary
- Exercises
- References
Priority Queues (Heaps)
- Model
- Simple Implementations
- Binary Heap
- Applications of Priority Queues
- d-Heaps
- Leftist Heaps
- Skew Heaps
- Binomial Queues
- Priority Queues in the Standard Library
- Summary
- Exercises
- References
Sorting
- Preliminaries
- Insertion Sort
- A Lower Bound for Simple Sorting Algorithms
- Shellsort
- Heapsort
- Mergesort
- Quicksort
- A General Lower Bound for Sorting
- Decision-Tree Lower Bounds for Selection Problems
- Adversary Lower Bounds
- Linear-Time Sorts: Bucket Sort and Radix Sort
- External Sorting
- Summary
- Exercises
- References
The Disjoint Sets Class
- Equivalence Relations
- The Dynamic Equivalence Problem
- Basic Data Structure
- Smart Union Algorithms
- Path Compression
- Worst Case for Union-by-Rank and Path Compression
- An Application
- Summary
- Exercises
- References
Graph Algorithms
- Definitions
- Topological Sort
- Shortest-Path Algorithms
- Network Flow Problems
- Minimum Spanning Tree
- Applications of Depth-First Search
- Introduction to NP-Completeness
- Summary
- Exercises
- References
Algorithm Design Techniques
- Greedy Algorithms
- Divide and Conquer
- Dynamic Programming
- Randomized Algorithms
- Backtracking Algorithms
- Summary
- Exercises
- References
Amortized Analysis
- An Unrelated Puzzle
- Binomial Queues
- Skew Heaps
- Fibonacci Heaps
- Splay Trees
- Summary
- Exercises
- References
Advanced Data Structures and Implementation
- Top-Down Splay Trees
- Red-Black Trees
- Treaps
- Suffix Arrays and Suffix Trees
- k-d Trees
- Pairing Heaps
- Summary
- Exercises
- References
Appendix A: Separate Compilation of Class Templates
- Everything in the Header
- Explicit Instantiation
Programming: A General Overview
- Using Recursive Function
- Resizing a Matrix
Algorithm Analysis
- Implementing the Bisection Method
- Finding Minimum Subsequence Sum
- Implementing Binary Search
Lists, Stacks, and Queues
- Implementing the STL find Routine
- Working with Lists
- Converting an Infix Expression to Postfix
- Checking for Balancing Brackets
- Reversing a Singly Linked List
- Implementing a Stack Class
- Implementing a Dequeue using a Linked List
Trees
- Implementing a Depth-First Traversal in the Child-Sibling Tree
- Converting a Tree into Graph-Assembler Instructions
- Using the findMax Function
- Generating an AVL Tree
- Inserting a Node into an AVL Tree
- Implementing a Splay Tree
- Working with Binary Tree
- Implementing a B-Tree
- Inserting Keys into the B-Tree
- Implementing the map Class
- Implementing a Splay Tree
Hashing
- Counting Number of Collisions
- Implementing Hopscotch Hashing
- Implementing Cuckoo Hashing
- Implementing Extendible Hashing
Priority Queues (Heaps)
- Merging Two Max Heaps
- Implementing Insert Operation in a Binomial Queue
Sorting
- Implementing Insertion Sort using STL
- Implementing Mergesort without Recursion
- Implementing the Selection Sort Algorithm
The Disjoint Sets Class
- Printing a Maze
Graph Algorithms
- Implementing a Topological Sorting Algorithm
- Solving a Single Source Shortest Path Problem
- Implementing Union Function in Kruskal's Algorithm
Algorithm Design Techniques
- Solving the Longest Common Subsequence Problem
Any questions?Check out the FAQs
Still have unanswered questions and need to get in touch?
Contact Us NowData structure refers to the organization and arrangement of data in an IT setup whereas Algorithm is the step-by-step process of using this stored data for desired results. Deep understanding of both the concepts will enable you to write efficient, scalable, and well-structured C++ programs.
Yes, with C++ you can access the standard template library (STL) that facilitates the creation and manipulation of complex data structures.
This would typically depend on the type of data, operations, memory constraints, and time complexity. Once you have an understanding of these factors, you can choose the most appropriate data set for your application.
It will improve your problem-solving skills and enhance your C++ programming skills. With a solid foundation in DSA you’ll be able to crack the coding job interviews with ease and confidently place yourself in high-paid jobs.
Essential Algorithms: A practical Approach to Computer Algorithms Using Python and C#. It teaches you how to write codes in both the programming languages.