Return to Snippet

Revision: 60666
at November 12, 2012 05:40 by tsteyska


Initial Code
struct podaci{
       int sifra,datum;
       float cijena;
       char naziv[20],vrsta[20];
};
struct lista{
       podaci pod;
       lista *slijedeci;
};
void InitL(lista *L){
     L -> slijedeci = NULL;
};
int EndL(lista *L){
    lista *a = L;
    int i = 1;
    while(a -> slijedeci){
              a = a -> slijedeci;
              i++;
    };
    return i;
};
int FirstL(lista *L){
    if(L->slijedeci==NULL)
                          return NULL;
    else
        return 0;
};

int NextL(int p, lista *L){
    lista *a = L;
    int i = 0;
    while(i < p && a -> slijedeci){
              a = a -> slijedeci;
              ++i;
    }
    ++i;
    return i;
}
int PreviousL(int p, lista *L){
    lista *a = L;
    int i = 0;
    while( a -> slijedeci && i<p){
           a = a -> slijedeci;
           ++i;
           }
    return i-1;
}
int LocateL(podaci x, lista *L){
    bool nadeno = false;
    int i = 0;
    lista *a = L -> slijedeci;
    while(!nadeno && a->slijedeci){
                 ++i;
                 if( x.sifra == a -> pod.sifra){
                         nadeno = true;
                         break;
                 }
                 else 
                      a = a -> slijedeci;
    }
    if (nadeno) 
       return i;
    else 
         return 0;
}


int InsertL(podaci x, int p, lista *L){
  int i=0;
  lista *insert,*trenutni, *zadnji;
  trenutni = L;
  zadnji = L->slijedeci;
  while (i<p && trenutni->slijedeci){
    trenutni = trenutni->slijedeci;
    zadnji = zadnji->slijedeci;
    }       
  insert = new lista;
  if(!insert) 
              return 0;
  insert -> pod = x;
  trenutni -> slijedeci = insert;
  insert -> slijedeci = zadnji;
  return 1;
}

int DeleteL(char p[], lista *L){
    if(!L)
          return 0;
    lista *a2 = L -> slijedeci;
    lista *a1 = L;
    while (a2){
          if(!strcmp(p,a2->pod.naziv)){
             a1 -> slijedeci = a2 -> slijedeci;
             delete a2;
             return 1;
            }
          if(!strcmp(p,a2->pod.vrsta)){
             a1 -> slijedeci = a2 -> slijedeci;
             delete a2;
             return 1;
            }
          a1=a2;
          a2=a2->slijedeci;
          }
    return 0;
}

podaci RetrieveL(int p, lista *L){
          int i = 0;
          lista *a = L -> slijedeci;
          while(i < p && a){
                  ++i;
                  a = a -> slijedeci;
          };
          return a -> pod;
}

void DeleteAllL(lista *L){
     lista *a1 = L;
     lista *a2 = L -> slijedeci;
     while(a2){
                  delete a1;
                  a1 = a2;
                  a2 = a2 -> slijedeci;
     };
     delete a1;
     L = NULL;
}

Initial URL

                                

Initial Description
Implementacija liste pomocu pokazivaca

Initial Title
Z1_lista_pokazivaci.h

Initial Tags
podataka

Initial Language
C++