Return to Snippet

Revision: 60740
at November 12, 2012 08:27 by majcen555


Initial Code
struct tdatum {
       int dan;
       int godina;
       int mjesec;
       };

struct objekt {
       int sifra;
       char vrsta[30];
       char naziv[30];
       tdatum datum;
       float cijena;
       };

struct lis {
       objekt zivotinja;
       lis *sljedeci;            
       };
       
lis *LA=new lis;
int sifra=1,br_objekt=0,v=0;
void InitL(lis *LA) {
     LA->sljedeci=NULL;
     }
     
void InsertL(objekt x,int p,lis *LA) {
     lis *zadnji=LA;
     for(int i=0;i<p;i++) zadnji=zadnji->sljedeci;
     lis *novi = new lis;
     zadnji->sljedeci=novi;
     novi->zivotinja=x;
     novi->sljedeci=NULL;
     }
     
objekt RetrieveL(int p,lis* LA) {
     int i;
     lis *tekuci = LA->sljedeci; 
     for(i=0;i<p;i++) tekuci=tekuci->sljedeci;
     return tekuci->zivotinja; 
     }
    
int EndL(lis *LA) {
    lis* tekuci=LA;
    int p=0;
    while(tekuci->sljedeci) {
                            tekuci=tekuci->sljedeci;
                            p++;
                            }
    return p;
    }
    
void DeleteL(int p, lis *LA) {
     lis *brisi = LA->sljedeci,*prethodni=LA;
     for(int i=0;i<p;i++) {
             prethodni=brisi;
             brisi=brisi->sljedeci;
             }
     prethodni->sljedeci=brisi->sljedeci;
     delete brisi;
     }
     
int LocateL(char x[],lis* LA) {
    lis *tekuci=LA; 
    int p=0;
    while(tekuci) {
                  if(tekuci->sljedeci==NULL) return EndL(LA);
                  if(!strcmp((tekuci->sljedeci)->zivotinja.naziv,x)||
                  (v==1&&!strcmp((tekuci->sljedeci)->zivotinja.vrsta,x))) return p;
                  tekuci=tekuci->sljedeci;
                  p++;
                  }
    return EndL(LA);
    }

int FirstL(lis* LA) {
    if(LA->sljedeci==NULL) return EndL(LA);
    return 0;
    }
        
int PreviousL(int p,lis* LA) {
    if(p==FirstL(LA)) return -1;
    return p-1;
    }  
    
int NextL(int p,lis* LA) {
    if(p==EndL(LA)) return -1;
    if(p==PreviousL(EndL(LA),LA)) return EndL(LA);
    return p+1;
    }
    
void DeleteAll(lis* LA) {
     lis* prethodni=LA,*tekuci=LA->sljedeci;
     while(tekuci) {
                   delete prethodni;
                   prethodni=tekuci;
                   tekuci=tekuci->sljedeci;
                   }
                   
     delete prethodni;
     LA=NULL;
     }

Initial URL
http://e.foi.hr/wiki/strukture_podataka/index.php/Zadatak_1_Majcen_Marko

Initial Description
Lista pokazivac

Initial Title
SP_Zadatak1_lista_pokazivac_mm

Initial Tags


Initial Language
C++