The implementation of Dijkstra's algorithm described below uses the TableEntry structure declared in Program . Each TableEntry instance has three fields, known, distance and predecessor, which correspond to the variables , and , respectively.
Program: Data Structures for Dijkstra's Algorithm
In each pass of its operation, Dijkstra's algorithm selects from the set of vertices for which the shortest-path is not yet known the one with the smallest tentative distance. Therefore, we use a priority queue to represent this set of vertices.
The priority assigned to a vertex is its tentative distance. The class Assoc defined in Program is used to associate of a priority with a given object instance. The Assoc class is derived from the Association class given in Section . Notice that the Assoc constructor calls RescindOwnership to prevent the destructor from deleting the associated object instance.