Book Image

C++ Data Structures and Algorithm Design Principles

By : John Carey, Anil Achary, Shreyans Doshi, Payas Rajan
Book Image

C++ Data Structures and Algorithm Design Principles

By: John Carey, Anil Achary, Shreyans Doshi, Payas Rajan

Overview of this book

C++ is a mature multi-paradigm programming language that enables you to write high-level code with a high degree of control over the hardware. Today, significant parts of software infrastructure, including databases, browsers, multimedia frameworks, and GUI toolkits, are written in C++. This book starts by introducing C++ data structures and how to store data using linked lists, arrays, stacks, and queues. In later chapters, the book explains the basic algorithm design paradigms, such as the greedy approach and the divide-and-conquer approach, which are used to solve a large variety of computational problems. Finally, you will learn the advanced technique of dynamic programming to develop optimized implementations of several algorithms discussed in the book. By the end of this book, you will have learned how to implement standard data structures and algorithms in efficient and scalable C++ 14 code.
Table of Contents (11 chapters)

Dynamic Programming on Strings and Sequences

So far, our exploration of dynamic programming has primarily focused on combinatorial problems and calculating terms of integer sequences with defined formulae. Now, we will consider another one of DP's most common uses, that is, working with patterns in sequences of data. The most typical scenarios in which a programmer would use DP for this purpose generally concern searching, comparing, and constructing strings.

As software developers, we often work collaboratively with several individuals who all have the ability to make contributions and modifications to the same project. Since the possibility always exists that a programmer may inadvertently introduce a bug into the code, or that the team may try a different approach for a given feature and then decide to return to their original method, it becomes extremely important to have some system of version control. In the event that a feature that was working recently mysteriously develops...