Jak zrobić żeby to co się dzieje w tablicy D działo się na listach ze wskaźnikami? czyli zeby np.
o:=G[j].awezel;
p:=G[j].bwezel;
i przykładowo o=1 a p=2
i tak zrobić (jeśli się da) żeby
If D[o]=0 then D[o]:=o;
If D[p]=0 then D[p]:=D[o]
w tym kroku dane w tablicy nie zmieniały się tylko wskaźnik 1 elementu tablicyD wskazywał na 1 i wskaźnik 2 elementu wskazywał na 1 .
Program algorytmkruskala;
USES CRT;
type
Krawedz = Record
awezel : Integer;
bwezel : Integer;
waga : Integer;
end;
Graf = Array[1..200] Of Krawedz;
Procedure Sortowanie(Var G : Graf; ilekr : Integer); {sortowanie krawędzi według wag}
Var
a, b : Integer;
tmp : Krawedz;
Begin
for a:=1 to ilekr-1 do
for b:=1 to ilekr-a do
If G[b].waga>G[b+1].waga then
Begin
tmp:=G[b];
G[b]:=G[b+1];
G[b+1]:=tmp;
end;
end;
Procedure Kruskal(ilewe : Integer; Var G : Graf; var F : Graf; var kralg : Integer); {algorytm Kruskala}
Var
D : Array[1..200] Of Integer;
i, j, k, o, p : Integer;
Begin
k:=1;
kralg:=0;
j:=1;
for i:=1 to ilewe do
D[i]:=0;
While k<ilewe do
Begin
o:=G[j].awezel;
p:=G[j].bwezel;
j:=j+1;
If (D[o]=0) or (D[p]=0) or (D[o]<>D[p]) then
Begin
kralg:=kralg+1;
F[kralg]:=G[j-1];
If D[o]=0 then D[o]:=o;
If D[p]=0 then D[p]:=D[o]
Else
Begin
For i:=1 to ilewe do
If D[i]=D[p] then D[i]:=D[o];
end;
end;
k:=k+1;
end;
end;