Startpunkten

This commit is contained in:
2026-03-05 13:39:39 +01:00
commit c4d164d8c3
20 changed files with 3598 additions and 0 deletions

75
Dijkstra/graf.h Normal file
View 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