/************************************************ * Laboration 4 i * Datastrukturer och Algoritmer * Dijkstras Shortest Path ************************************************* * Christian Ohlsson * Karlstads universitet, 1999 * * Graph.h * Innehåller de definitioner och klasser * som används för att beräkna kortaste * vägen mellan två städer *************************************************/ #ifndef _GRAPH_H_ #define _GRAPH_H_ #include "list.h" /*=============================================== * graphNode * Nod mellan två städer -------------------------------------------------*/ class graphNode { public: graphNode(); //Construktor ~graphNode() {}; //Destruktor int startCity; //Stad man åker ifrån int endCity; //Stad man kommer till int Start; //Starttid int End; //Ankomsttid void operator=(graphNode node); //Operator-överlagring int operator>(graphNode node); //för noder int operator==(graphNode node); //... }; /*=============================================== * dijkstraNode * Speciell nod för Dijkstra -------------------------------------------------*/ class dijkstraNode { public: int deleted; //Märkning för noden int lastCity; //Föregående besökt stad int Totaltime; //TotaL restid dijkstraNode(); //Construktor ~dijkstraNode(); //Destruktor graphNode Node; //En nod }; /*=============================================== * graph * Skapar en graf och sköter uträkningen -------------------------------------------------*/ class graph { private: int visitedCities; //Antalet traverserade städer list **table; //Resväg graphNode shortestPath(int startvertex, int endvertex, int time); void delPath(); int getTime(graphNode node, int time); int getMinTime(dijkstraNode *temptable); void calcPath(dijkstraNode *array, int start); public: int lastTime; //Tid som ökas när vi reser int prevSize; //Antalet städer i arrayen graphNode *lastPath; //Traverserad väg graph(); //Construktor ~graph(); //Destruktor void deleteGraph(); void connect(int startvertex, int endvertex, graphNode node); int makeGraph(int size); void dijkstra(int startvertex, int endvertex, int time); }; #endif