76 lines
2.5 KiB
C++
76 lines
2.5 KiB
C++
/************************************************
|
|
* 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<graphNode> **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
|
|
|