Return to Snippet

Revision: 60680
at November 12, 2012 06:29 by ivandokuzovic


Initial Code
struct tDatum{
       short dan, godina;
       char mjesec[8];
       };
 
struct tZivotinja{
       int sifra;
       char vrsta[50],naziv[50];
       tDatum datum;
       float cijena;               
       };
 
struct tLista{
       tZivotinja zivotinja;
       tLista *slijedeci; 
       };
 
tLista *lista=new tLista;
int sifra=1,br_elem=0;
int br=0;
 
void InitL(tLista *lista){
     lista->slijedeci=NULL;
     }

int EndL(tLista *lista){
    tLista* tekuci=lista;
    int p=0;
    while(tekuci->slijedeci){
         tekuci=tekuci->slijedeci;
         p++;
         }
    return p;
    }

int FirstL(tLista* lista){
    if(lista->slijedeci==NULL)
         return EndL(lista);
    return 0;
    }

int PreviousL(int p,tLista* lista){
    if(p==FirstL(lista))
         return -1;
    return p-1;
    } 

int NextL(int p,tLista* lista){
    if(p==EndL(lista)) return -1;
    if(p==PreviousL(EndL(lista),lista))
         return EndL(lista);
    return p+1;
    }
    
int LocateL(char x[],tLista* lista){
    tLista *tekuci=lista; 
    int p=0;
    while(tekuci){
                  if(tekuci->slijedeci==NULL)
                       return EndL(lista);
                  if(!strcmp((tekuci->slijedeci)->zivotinja.naziv,x)||(br==1&&!strcmp((tekuci->slijedeci)->zivotinja.vrsta,x)))
                       return p;
                  tekuci=tekuci->slijedeci;
                  p++;
                  }
    return EndL(lista);
    }

void InsertL(tZivotinja x,int p,tLista *lista) {
     tLista *zadnji=lista;
     for(int i=0;i<p;i++) zadnji=zadnji->slijedeci;
     tLista *novi = new tLista;
     zadnji->slijedeci=novi;
     novi->zivotinja=x;
     novi->slijedeci=NULL;
     }

void DeleteL(int p, tLista *lista) {
     tLista *brisi = lista->slijedeci,*prethodni=lista;
     for(int i=0;i<p;i++) {
             prethodni=brisi;
             brisi=brisi->slijedeci;
             }
     prethodni->slijedeci=brisi->slijedeci;
     delete brisi;
     }


tZivotinja RetrieveL(int p,tLista* lista) {
     tLista *tekuci = lista->slijedeci; 
     for(int i=0;i<p;i++)
          tekuci=tekuci->slijedeci;
     return tekuci->zivotinja; 
     }
 
 
void DeleteAll(tLista* lista) {
     tLista* prethodni=lista,*tekuci=lista->slijedeci;
     while(tekuci) {
                   delete prethodni;
                   prethodni=tekuci;
                   tekuci=tekuci->slijedeci;
                   }
 
     delete prethodni;
     lista=NULL;
     }

Initial URL

                                

Initial Description
implementacija liste pomocu polja

Initial Title
lista_pokazivaci.h ivan

Initial Tags

                                

Initial Language
C++