Return to Snippet

Revision: 60856
at November 13, 2012 21:19 by dario_kovacic


Initial Code
#include <iostream>
struct zivotinja{
      int sifra;
      char vrsta[50];
      char naziv[50];
      struct {
             int d,m,g;       
      }datum;
      float cijena; 
       };
 
 
 
struct lista{
       zivotinja z;
       lista *sljedeci;
       };
 
typedef lista *elem;
 
 
lista* InitL(lista *l){
        l = new lista;
        lista *zadnji = new lista;
        l->sljedeci = zadnji;
        zadnji->sljedeci = NULL;
        return l;
}
elem EndL(lista *l){
    lista *tekuci= l;
    while(tekuci->sljedeci)
       tekuci=tekuci->sljedeci;
    return tekuci;
}
elem FirstL(lista *l){
     if(l == NULL) return EndL(l);
     else return l->sljedeci;
}
 
 
 
elem NextL(elem p, lista *l){
    if(p->sljedeci==NULL) return EndL(l);
    return p->sljedeci;
}
 
 
 
elem PreviousL(elem p, lista *l){
    lista *tekuci = l->sljedeci;
    while(p != tekuci->sljedeci && tekuci->sljedeci!=NULL)
       tekuci=tekuci->sljedeci;
    return tekuci;
}
 
elem DeleteAllL(lista *l){
     l->sljedeci = EndL(l);
}
 
int InsertL(zivotinja ziv, lista *p, lista *l){
    lista *tekuci=p;
    lista *novi=new lista;
 
    if(p==EndL(l)){
       novi->sljedeci=NULL;
       tekuci->sljedeci=novi;
       tekuci->z=ziv;
    }
    else if(p==FirstL(l)){
         novi->sljedeci=tekuci;
         l->sljedeci=novi;
         novi->z=ziv;
    }
    else{
         lista *prethodni=PreviousL(p,l);
         novi->sljedeci=tekuci;
         prethodni->sljedeci=novi;
         novi->z=ziv;
    }
    if(tekuci->z.sifra==ziv.sifra)
       return 1;
    else
       return 0;
}
 
 
int DeleteL(elem p, lista *l){
    elem prethodni, tekuci;
    tekuci = p;
    if(p==FirstL(l)){
       l->sljedeci = tekuci->sljedeci;
       delete tekuci;
       return 1;
    }
    else{
       prethodni = PreviousL(tekuci,l);
       prethodni->sljedeci = tekuci->sljedeci;
       delete tekuci;
       return 1;
    }
    return 0;
}
 
 
elem LocateL(zivotinja ziv, lista *l){
     elem tekuci;
     tekuci = l->sljedeci;
     while(tekuci){
 
        if(ziv.sifra!=0){
           if(ziv.sifra == tekuci->z.sifra)
              return tekuci;
        }
 
        tekuci = tekuci->sljedeci;
     }
}
 
zivotinja RetrieveL(elem p, lista *l){
    return p->z;
 }

Initial URL


Initial Description
biblioteka sadrži implementaciju liste pomoću pokazivača (strukture podataka, zadtak 1)

Initial Title
lista_pokazivac.h

Initial Tags


Initial Language
C++