Sekvan paĝon! Antaŭan paĝon! Indekson! Instrukcion!

Larĝiĝema trairo de grafeo

(La uzataj datumstrukturo kaj la nomoj vertico, erRef, grafeo estas tiaj samaj kiel en la ekzemplo Interna prezento de grafeoj)
PROCEDURO larĝIro(v: vertico; PROCEDURO vizitu); 
   KONST maksNro = 6; 
   VAR ref: erRef; 
       u, unua, lasta: vertico; 
       nova: TABELO [vertico] EL Bulea; 
       vico: TABELO [vertico] EL vertico; 
 
   PROCEDURO envicigu(w: vertico); 
   STARTO 
      vico[lasta] := w; 
      SE lasta < maksNro TIAM lasta := sek(lasta); 
   FINO; {envicigu} 
 
   PROCEDURO elvicigu(VAR w: vertico); 
   STARTO 
      w := vico[unua]; unua := sek(unua); 
   FINO; {elvicigu} 
 
   FUNKCIO vicoMalplenas: Bulea; 
   STARTO 
       vicoMalplenas := (unua = lasta); 
   FINO; {vicoMalplenas} 
 
STARTO { de larĝIro } 
 
   POR unua := 1 SUPRE maksNro FARU nova[unua] := vero; 
   unua := 1; lasta := unua; 
   envicigu(v); nova[v] := malvero; 
 
   RIPETU 
      elvicigu(u); vizitu(u); ref := grafeo[u]; 
      DUM ref ≠ NUL FARU STARTO 
          u := ref↑.nro; 
          ref := ref↑.plu; 
          SE nova[u] TIAM STARTO 
             envicigu(u); 
             nova[u] := malvero; 
          FINO; 
      FINO; 
   ĜIS vicoMalplenas; 
 
FINO; { larĝIro }


Profundiĝema trairo de grafeo

(La uzataj datumstrukturo kaj la nomoj vertico, erRef, grafeo estas tiaj samaj kiel en la ekzemplo Interna prezento de grafeoj)
PROCEDURO profundIro(komenco: vertico; PROCEDURO vizitu); 
 
   VAR nova: TABELO [vertico] EL Bulea; 
       w:    vertico; 
 
   PROCEDURO profunden(v: vertico); 
      VAR ref: erRef; 
   STARTO 
      vizitu(v); nova[v]:=malvero; 
      ref := grafeo[v]; 
      DUM  ref ≠ NUL  FARU STARTO 
         SE nova[ref↑.nro] TIAM profunden(ref↑.nro); 
         ref := ref↑.plu; 
      FINO; 
   FINO;     {profunden} 
 
STARTO  {profundIro} 
   POR w := 1 SUPRE 6 FARU nova[w] := vero; 
   profunden(komenco)       { --- la radika voko } 
FINO;   {profundIro}


Sekvan paĝon Indekson Instrukcion