unit graflist; interface const maxpont=100; nincs=-10; type eltip=integer;{a matrixnak ilyen tipusu elemei vannak - CSUCSLISTA} elem=record csucs,hossz:integer; end; csucs=record db:integer; szom:array[1..maxpont-1] of elem;{a szomszedpontok felsorolasa} end; csucsl=array[1..maxpont] of csucs; graf=object private n:integer; m:csucsl; public procedure ures{(var graf:csucsm)}; function csucsszam{(const graf:csucsm)}:integer; function elszam{(const graf:csucsm)}:integer; function vanel({const graf:csucsm;}const i,j:integer):boolean; function elsoszomszed({const graf:csucsm;}const i:integer):integer; function kovszomszed({const graf:csucsm;}const i:integer):integer; procedure ujel({var graf:csucsm;}const i,j:integer;const h:eltip); procedure eltorol({var graf:csucsm;}const i,j:integer); procedure ujcsucs({var graf:csucsm;}const i:integer); procedure csucstorol({var graf:csucsm;}const i:integer); end; implementation procedure graf.ures{(var graf:csucsm)}; var i:integer; begin for i:=1 to n do m[i].db:=0; end; function graf.csucsszam{(const graf:csucsm)}:integer; var darab,i:integer; begin darab:=0; for i:=1 to n do if m[i].db>0 then darab:=darab+1; csucsszam:=darab; end; function graf.elszam{(const graf:csucsm)}:integer; var sv:integer; begin sv:=graf.csucsszam; if sv=0 then elszam:=sv else elszam:=sv-1; end; function graf.vanel({const graf:csucsm;}const i,j:integer):boolean; var k:integer; begin if (m[i].db=0) or (i=j) then vanel:=false else begin k:=1; while (k<=m[i].db) and (m[i].szom[k].csucs<>j) do k:=k+1; if k<=m[i].db then vanel:=true else vanel:=false; end; end; function graf.elsoszomszed({const graf:csucsm;}const i:integer):integer; begin end; function graf.kovszomszed({const graf:csucsm;}const i:integer):integer; begin end; procedure graf.ujel({var graf:csucsm;}const i,j:integer;const h:eltip); begin {hiba ha nem letezo csucshoz akar elt huzni} {hiba, ha mar szerepet egyszer} if i<>j then begin m[i].db:=m[i].db+1; m[i].szom[m[i].db].csucs:=j; m[i].szom[m[i].db].hossz:=h; end; end; procedure graf.eltorol({var graf:csucsm;}const i,j:integer); var darab,k:integer; begin {hiba ha nem letezo csucsot akar torolni} darab:=m[i].db; k:=1; while (k<=darab) and (m[i].szom[k].csucs<>j) do k:=k+1; if k<=darab then while k<>darab do begin m[i].szom[k].csucs:=m[i].szom[k+1].csucs; m[i].szom[k].hossz:=m[i].szom[k+1].hossz; end; m[i].db:=m[i].db-1; end; procedure graf.ujcsucs({var graf:csucsm;}const i:integer); begin end; procedure graf.csucstorol({var graf:csucsm;}const i:integer); var j:integer; begin m[i].db:=nincs; end; begin end.