Startpunkten
This commit is contained in:
75
Dijkstra/graf.h
Normal file
75
Dijkstra/graf.h
Normal file
@@ -0,0 +1,75 @@
|
||||
/************************************************
|
||||
* 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
|
||||
|
||||
Reference in New Issue
Block a user