Return to Snippet

Revision: 60761
at November 12, 2012 08:49 by JosipPrimorac


Initial Code
#include <cstring>

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

        
struct list{
       tziv ziv;
       list *sljedeci;
};
        
typedef list *elem;

elem EndL(list *l) {
     list *tekuci = l;
     while (tekuci->sljedeci) 
           tekuci = tekuci->sljedeci;
     return tekuci;
};

elem FirstL (list *l) {
     if (l->sljedeci) 
        return l;
     else 
          return EndL(l);
};

elem NextL (elem pozicija, list *l) {
     if (pozicija->sljedeci) 
        return pozicija->sljedeci;
     else 
          return EndL(l);
};

elem PreviousL (elem pozicija, list *l){
     if (pozicija == l) 
        return 0;
     list *tekuci = l;
     while (tekuci->sljedeci) {
           if (tekuci->sljedeci == pozicija) 
              return tekuci;
           tekuci = tekuci->sljedeci;
     }
};

elem LocateL (tziv z, list *l) {
     list *tekuci = l;
     while (tekuci) {
           if (tekuci->sljedeci && tekuci->sljedeci->ziv.naziv == z.naziv)
           return tekuci;
           tekuci = tekuci->sljedeci;
     }
     return EndL(l);
};

elem InsertL (tziv z, elem pozicija, list *l) {
     if (pozicija) {
        list *novi = new list;
        
        novi->ziv.sifra = z.sifra;
        novi->ziv.d = z.d;
        novi->ziv.m = z.m;
        novi->ziv.cijena = z.cijena;
        novi->ziv.g = z.g;
           
        strcpy (novi->ziv.vrsta, z.vrsta);
        strcpy (novi->ziv.naziv, z.naziv);
       
        
        if (pozicija->sljedeci){
           novi->sljedeci = pozicija->sljedeci;
           }
        else {
             novi->sljedeci = NULL;
             pozicija->sljedeci = novi;
        }
     }
     else 
          return 0;
};

elem DeleteL (elem pozicija, list *l) {
     if (pozicija && pozicija->sljedeci) {
        list *pom = pozicija->sljedeci;
        pozicija->sljedeci = pozicija->sljedeci->sljedeci;
        delete pom;
    }
    else 
         return 0;
    };

tziv RetrieveL (elem pozicija, list *l) {
     tziv ziv;
     if (pozicija && pozicija->sljedeci) {
        ziv.sifra = pozicija->sljedeci->ziv.sifra;
        ziv.cijena = pozicija->sljedeci->ziv.cijena;
        ziv.d = pozicija->sljedeci->ziv.d;
        ziv.m = pozicija->sljedeci->ziv.m;
        ziv.g = pozicija->sljedeci->ziv.g;
             
        strcpy (ziv.vrsta, pozicija->sljedeci->ziv.vrsta);
        strcpy (ziv.naziv, pozicija->sljedeci->ziv.naziv);
        return ziv;
     }
};

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
lista s pokazivacima

Initial Title
lista_pokazivac.h

Initial Tags


Initial Language
C++