Strukture podataka i algoritmi
Rekurzivna definicija liste

Listu mozemo da definisemo kao:

  1. praznu ili
  2. sastavljenu od cvora i pokazivaca na listu.

Lista moze da se obilazi rekurzivnom funkcijom: npr. da bi prebrojali broj elemenata u listi:

int ListCount( List l ) {
    if ( l == NULL ) return 0;
    else return 1 + ListCount( l->next );
    }
Medjutim, mnogo je brze napisati ovu funkciju bez rekurzivnog poziva:
int ListCount( List l ) {
    int cnt = 0;
    while ( l != NULL ) {
        cnt++;
        l = l->next;
        }
    return cnt;
    }
Gubitak prilikom poziva funkcije je dovoljno veliki na svakoj masini, tako da se druga iterativna verzija izvrsava brze. (Jos jedan faktor je da performanse modernih masina veoma mnogo zavise od kes memorije: iterativni kod druge verzije ne koristi toliko mnogo memorije za stek poziva i time bolje iskoristava kes memoriju.)

Nazad na Stabla
Nazad na Sadrzaj
© John Morris, 1996. Prevod sa engleskog, Dragan Stevanovic, 2002.