interface
uses
MyMemObj, Windows, Graphics, SysUtils, Classes;
type
TKante = record
DestKnoten: IndexType;
//Zielknoten
Value: Real;
//Wertigkeit der Kante
Marke: Integer;
end;
PKante = ^TKante;
TKantenArray = array[0..0] of TKante; //Arrayelemente werden dynamisch alloziiert
PKantenArray = ^TKantenArray;
TKnoten = record
Name: String;
Marke: Integer; //Zeiogt einen
besuchten Knoten an
KantenCount: Cardinal; //Anzahl der von dem Knoten abgehenden Kanten
Kanten: PKantenArray; //Zeiger auf das Array, das die Kanten enthält
end;
PKnoten = ^TKnoten;
TGraph = object(TMyDynamicMemoryRec) //Graph-Object baut auf einem dynamischen Speicher-Manager auf
protected
procedure DelKanteEqualAndDecKanteGreaterThan(n:
IndexType);
function CountKanten: IndexType;
public
constructor Create;
destructor Destroy;
function PointItem(n :IndexType): PKnoten;
//gibt einen Zeiger auf den n-ten Knoten zurück
function Add(const New :TKnotenAdd): Boolean;
//erzeugt einen neuen Knoten
function Delete(n :IndexType): Boolean; //löscht
den n-ten Knoten
procedure Clear; //löscht den gesammten
Graphen
procedure AddKante(New: TKanteAdd; BiDim:
Boolean = False);
function DeleteKante(n, m :IndexType): Boolean;
function ExistsKanteZuKnoten(n: IndexType):
Boolean;
procedure ZeroKnotenMarken; //setzt alle Knotenmarken
des Graphen auf 0
procedure ZeroKantenMarken; //setzt alle
Kantenmarken des Graphen auf 0
function ExistsConnection(StartIndex, EndIndex:
IndexType): Boolean;
procedure TraversDeep(StartIndex:
IndexType);
procedure TraversWidth(StartIndex:
IndexType);
procedure TransHull;
function ShortesWay(StartIndex,
EndIndex: IndexType; var Distance :Real; KantenCount: Boolean): Boolean;
function TravellingSalesmanProblem(StartIndex,
EndIndex: IndexType; var KantenCount: IndexType; var Distance :Real; AriMax:
Integer): Boolean;
function SaveToFile(FileName: String): Boolean;
function LoadFromFile(FileName: String; XOffs,
YOffs: Integer): Boolean; virtual;
end;
Last modified: Fri Nov 19 16:42:02 CET 1999