Return to Snippet

Revision: 60654
at November 12, 2012 05:00 by nikym23


Initial Code
#include <iostream>
struct zivotinje{
      int sifra;
      char vrsta[30];
      char naziv[30];
      int d,m,g,dat;
      float cijena; 
       };



struct lista{
       zivotinje a;
       lista *sljedeci;
       };
       
typedef lista *element;

   
lista* InitL(lista *lis){
        lis = new lista;
        lista *zadnji = new lista;
        lis->sljedeci = zadnji;
        zadnji->sljedeci = NULL;
        return lis;
}
element EndL(lista *lis){
    lista *tekuci= lis;
    while(tekuci->sljedeci)
       tekuci=tekuci->sljedeci;
    return tekuci;
}
element FirstL(lista *lis){
if(lis == NULL)
return EndL(lis);
else
return lis->sljedeci;
}



element NextL(element p, lista *lis){
    if(p->sljedeci==NULL) return EndL(lis);
    return p->sljedeci;
}



element PreviousL(element p, lista *lis){
    lista *tekuci = lis->sljedeci;
    while(p != tekuci->sljedeci && tekuci->sljedeci!=NULL)
       tekuci=tekuci->sljedeci;
    return tekuci;
}

element DeleteAllL(lista *lis){
     lis->sljedeci = EndL(lis);
}

int InsertL(zivotinje ziv, lista *p, lista *lis){
    lista *tekuci=p;
    lista *novi=new lista;
    
    if(p==EndL(lis)){
       novi->sljedeci=NULL;
       tekuci->sljedeci=novi;
       tekuci->a=ziv;
    }
    else if(p==FirstL(lis)){
         novi->sljedeci=tekuci;
         lis->sljedeci=novi;
         novi->a=ziv;
    }
    else{
         lista *prethodni=PreviousL(p,lis);
         novi->sljedeci=tekuci;
         prethodni->sljedeci=novi;
         novi->a=ziv;
    }
    if(tekuci->a.sifra==ziv.sifra)
       return 1;
    else
       return 0;
}


int DeleteL(element p, lista *lis){
    element prethodni, tekuci;
    tekuci = p;
    if(p==FirstL(lis)){
       lis->sljedeci = tekuci->sljedeci;
       delete tekuci;
       return 1;
    }
    else{
       prethodni = PreviousL(tekuci,lis);
       prethodni->sljedeci = tekuci->sljedeci;
       delete tekuci;
       return 1;
    }
    return 0;
}


element LocateL(zivotinje ziv, lista *lis){
     element tekuci;
     tekuci = lis->sljedeci;
     while(tekuci){
                   
        if(ziv.sifra!=0){
           if(ziv.sifra == tekuci->a.sifra)
              return tekuci;
        }
       
        tekuci = tekuci->sljedeci;
     }
}

zivotinje RetrieveL(element p, lista *lis){
    return p->a;
 }

Initial URL


Initial Description
Implementacija liste pomocu pokazivaca

Initial Title
Lista_pokazivaca.h Strukture podataka

Initial Tags


Initial Language
C++