Return to Snippet

Revision: 60544
at November 11, 2012 07:05 by milan_pavlovic


Initial Code
struct tdatum {
       int dan,godina;
       char mjesec[10];
       };

struct elem {
       int sifra;
       char vrsta[35],naziv[35];
       tdatum datum;
       float cijena;
       };

struct lis {
       elem zivotinja;
       lis *sljedeci;            
       };
       
lis *lista=new lis;
int sifra=1,br_elem=0,v=0;

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

int FirstL(lis* lista) {
    if(lista->sljedeci==NULL) return EndL(lista);
    return 0;
    }
        
int PreviousL(int p,lis* lista) {
    if(p==FirstL(lista)) return -1;
    return p-1;
    }  

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

void Vrati(elem x,int p, lis* lista) {
     lis* tekuci=lista->sljedeci;
     for(int i=0;i<p;i++) tekuci=tekuci->sljedeci;
     tekuci->zivotinja=x;
     }

Initial URL

                                

Initial Description
Datoteka zaglavlja koja sadrži osnovne funkcije za rad s elementima liste implementirane pomoću pokazivača.

Initial Title
lista_pokazivac.h

Initial Tags

                                

Initial Language
C++