Return to Snippet

Revision: 60508
at November 11, 2012 01:55 by dpavlovi


Initial Code
struct podaci{
       int sifra,datum[3];
       float cijena;
       char naziv[50],vrsta[50];
       };
struct lista_unos{
       podaci value;
       lista_unos *sljedeci;
       };
typedef lista_unos *elem;
typedef lista_unos lista;
elem EndL(lista *lista){
     return 0;
     }
elem FirstL(lista *b){
     if(b->sljedeci==NULL)
       return EndL(b);
     else
       return b->sljedeci;
     }
lista *InitL(lista *b){
      b=new lista;
      b->sljedeci=NULL;
      return b;
      }
elem PreviousL(elem poz,lista *b){
     if(poz==FirstL(b)) 
     return 0;
     if(poz==EndL(b)){
       while(b->sljedeci)
         b=b->sljedeci;
       return b;
         }
     else{
          while(b->sljedeci!=poz)
            b=b->sljedeci;
          return b;
          }
     }
int InsertL(podaci x, lista *poz, lista *b){
    lista *tren,*novi;
    tren=b;
    if(poz>tren->sljedeci || poz<0)
    return 0;
    if(poz==EndL(b)){
                   while(b->sljedeci)
                     b=b->sljedeci;
                   novi=new lista;
                   novi->sljedeci=NULL;
                   b->sljedeci=novi;
                   novi->value=x;
                   return 1;
                   }
    else{
         poz=PreviousL(poz,b);
         novi=new lista;
         novi->sljedeci=b->sljedeci;
         poz->sljedeci=novi;
         novi->value=x;
         return 1;
         }   
}
podaci RetrieveL(elem poz, lista *b){
     return poz->value;
     }
int DeleteL(elem poz, lista *b){
    elem tekuci=poz,prosli;
    if(FirstL(b)==EndL(b))
     return 0;
    if(poz==EndL(b))
     return 0;
    if(poz==FirstL(b)){
                       b->sljedeci=tekuci->sljedeci;
                       delete tekuci;
                       return 1;
                       }
    else{
         prosli=PreviousL(tekuci,b);
         prosli->sljedeci=tekuci->sljedeci;
         delete tekuci;
         return 1;
         }
    return 0;
}
elem LocateL(podaci x, lista *b){
     elem poz=PreviousL(EndL(b),b);
     if(x.cijena==1)
       if(FirstL(b)!=EndL(b))
         while(false==(!true)){
          podaci tren=RetrieveL(poz,b);
          if(strcmp(x.naziv,tren.naziv)==0)
            return poz;
          if(poz==FirstL(b))
            break;
          poz=PreviousL(poz,b);
                             }
     if(x.cijena==2)
       if(FirstL(b)!=EndL(b))
         while(false==(!true)){
             podaci tren=RetrieveL(poz,b);
             if(strcmp(x.vrsta,tren.vrsta)==0)
                return poz;
             if(poz==FirstL(b))
                break;
             poz=PreviousL(poz,b);
                               }
     return EndL(b);
     }
elem NextL(elem poz, lista *b){
     if(poz->sljedeci==NULL)
     return EndL(b);
     if(poz==EndL(b))
     return 0;
     else
       return poz->sljedeci;
     }
elem DeleteAllL(lista *b){
        elem tren,prosli;
        prosli=b;
        tren=b->sljedeci;
        while(tren){
                        delete prosli;
                        prosli=tren;
                        tren=tren->sljedeci;
                        }
        delete prosli;
        b=NULL;
        return NULL;
}

Initial URL


Initial Description
Struktura headera za implementaciju liste putem pokazivača, koja se uključuje unutar glavnog programa

Initial Title
lista_pokazivac.h

Initial Tags
list

Initial Language
C++