#### Overview of this book

Building your own applications is exciting but challenging, especially when tackling complex problems tied to advanced data structures and algorithms. This endeavor demands profound knowledge of the programming language as well as data structures and algorithms – precisely what this book offers to C# developers. Starting with an introduction to algorithms, this book gradually immerses you in the world of arrays, lists, stacks, queues, dictionaries, and sets. Real-world examples, enriched with code snippets and illustrations, provide a practical understanding of these concepts. You’ll also learn how to sort arrays using various algorithms, setting a solid foundation for your programming expertise. As you progress through the book, you’ll venture into more complex data structures – trees and graphs – and discover algorithms for tasks such as determining the shortest path in a graph before advancing to see various algorithms in action, such as solving Sudoku. By the end of the book, you’ll have learned how to use the C# language to build algorithmic components that are not only easy to understand and debug but also seamlessly applicable in various applications, spanning web and mobile platforms.
Chapter 1: Data Types
Free Chapter
Chapter 2: Introduction to Algorithms
Chapter 3: Arrays and Sorting
Chapter 4: Variants of Lists
Chapter 5: Stacks and Queues
Chapter 6: Dictionaries and Sets
Chapter 7: Variants of Trees
Chapter 8: Exploring Graphs
Chapter 9: See in Action
Chapter 10: Conclusion
Index
Other Books You May Enjoy

# Shortest path

A graph is a great data structure for storing data of various maps, such as cities and the distances between them. For this reason, one of the obvious real-world applications of graphs is searching for the shortest path between two nodes, which takes into account a specific cost, such as the distance, the necessary time, or even the amount of fuel required.

There are several approaches to the topic of searching for the shortest path in a graph. However, one of the common solutions is Dijkstra’s algorithm, which makes it possible to calculate the distance from a starting node to all nodes located in the graph. Then, you can easily get not only the cost of the connection between two nodes but also find nodes that are between the start and end nodes.

Dijkstra’s algorithm uses two auxiliary node-related arrays:

• One for storing an identifier of the previous node, which is the node from which the current node can be reached with the smallest overall...