Return to Snippet

Revision: 60679
at November 12, 2012 06:26 by anabel_lee


Initial Code
//  IMPLEMENTACIJA LISTE POMOCU POKAZIVACA  //

#include <cstring>

struct zivotinje {
       int sifra, d,m,g;
       char vrsta[20], naziv[40];
       float cijena;
       };

        
struct LIST {
       zivotinje zi;
       LIST *sljedeci;
       };
        
typedef LIST *element;


element ENDL(LIST* L) {
        LIST *tekuci = L;
        while (tekuci->sljedeci) 
              tekuci = tekuci->sljedeci;
        return tekuci;
        };

element FIRSTL (LIST *L) {
        if (L->sljedeci) 
           return L;
        else 
             return ENDL(L);
        };

element NEXTL (element position, LIST *L) {
        if (position->sljedeci) 
           return position->sljedeci;
        else 
             return ENDL(L);
        };

element PREVIOUSL (element position, LIST *L){
        if (position == L) 
           return 0;
        LIST *tekuci = L;
        while (tekuci->sljedeci) {
              if (tekuci->sljedeci == position) 
                 return tekuci;
                 tekuci = tekuci->sljedeci;
              }
        };

element LOCATEL (zivotinje z, LIST *L) {
        LIST *tekuci = L;
        while (tekuci) {
              if (tekuci->sljedeci && tekuci->sljedeci->zi.naziv == z.naziv)
              return tekuci;
              tekuci = tekuci->sljedeci;
              }
        return ENDL(L);
        };

element INSERTL (zivotinje z, element position, LIST *L) {
        if (position) {
           LIST *novi = new LIST;
           novi->zi.sifra = z.sifra;
           novi->zi.d = z.d;
           novi->zi.m = z.m;
           novi->zi.cijena = z.cijena;
           novi->zi.g = z.g;
 
           strcpy (novi->zi.vrsta, z.vrsta);
           strcpy (novi->zi.naziv, z.naziv);
           if (position->sljedeci) 
              novi->sljedeci = position->sljedeci;
           else novi->sljedeci = NULL;
                position->sljedeci = novi;
           }
        else 
             return 0;
        };

element DELETEL (element position, LIST *L) {
    if (position && position->sljedeci) {
       LIST *pom = position->sljedeci;
       position->sljedeci = position->sljedeci->sljedeci;
       delete pom;
    }
    else 
         return 0;
    };

zivotinje RETRIEVEL (element position, LIST *L) {
          zivotinje zi;
          if (position && position->sljedeci) {
             zi.sifra = position->sljedeci->zi.sifra;
             zi.cijena = position->sljedeci->zi.cijena;
             zi.d = position->sljedeci->zi.d;
             zi.m = position->sljedeci->zi.m;
             zi.g = position->sljedeci->zi.g;
 
             strcpy (zi.vrsta, position->sljedeci->zi.vrsta);
             strcpy (zi.naziv, position->sljedeci->zi.naziv);
             
             return zi;
             }
          };

void DELETEALLL (LIST *L) {
     LIST *prvi = L->sljedeci, *tekuci;
     while (prvi) {
           tekuci = prvi;
           prvi = prvi->sljedeci;
           delete tekuci;
           }
};

LIST* INITL (LIST *L) {
      L = new LIST;
      L->sljedeci = NULL;
      return L;
      };

Initial URL


Initial Description
zaglavlje-pokazivaci

Initial Title
pokazivac_lista

Initial Tags


Initial Language
C++