Larĝiĝema trairo de grafeo


   
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 POR unua:=1 SUPRE maksNro FARU nova[unua]:=vero;
   unua:=1; lasta:=unua; envicigu(v); nova[v]:=falso;
   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]:=falso FINO;
      FINO;
   ĜIS vicoMalplenas;
FINO; { larĝIro }


Profundiĝema trairo de grafeo

   
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]:=falso;
             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}


[Indekso][Instrukcio]