/ Published in: C++
Datoteka zaglavalja
lista pokazivaci
lista pokazivaci
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#ifndef LISTA_POK_H #define LISTA_POK_H #include <iostream> #include <cstring> // memcpy() using namespace std; #define ERROR_CODE NULL struct tDatum { short dan, mjesec, godina; }; struct tZiv { int sifra; char vrsta[50], naziv[50]; float cijena; tDatum dat_dostave; }; struct tEl { tZiv el; tEl* slj; }; typedef tEl Lista; typedef tEl* Element; typedef tZiv Zivotinja; typedef tDatum Datum; bool operator==(Datum d1, Datum d2) { if(d1.dan != d2.dan) return false; if(d1.mjesec != d2.mjesec) return false; if(d1.godina != d2.godina) return false; return true; } bool operator==(Zivotinja z1, Zivotinja z2) { if(z1.sifra != z2.sifra) return false; if(z1.cijena != z2.cijena) return false; if(z1.sifra != z2.sifra) return false; if(z1.sifra != z2.sifra) return false; if(!(z1.dat_dostave == z2.dat_dostave) ) return false; return true; }; ostream& operator<<(ostream& os, Datum d1) { os << d1.dan << '.' << d1.mjesec << '.' << d1.godina << '.'; return os; } ostream& operator<<(ostream& os, Zivotinja z1) { os << "Sifra: " << z1.sifra << endl; os << "Naziv: " << z1.naziv << endl; os << "Vrsta: " << z1.vrsta << endl; os << "Cijena: " << z1.cijena << endl; os << "Datum dostave: " << z1.dat_dostave << endl; return os; } // proto func Element FirstL(Lista*); Element EndL(Lista*); Element NextL(Element, Lista*); Element PreviousL(Element, Lista*); Element LocateL(Zivotinja, Lista*); bool InsertL(Zivotinja, Element, Lista*); bool DeleteL(Element, Lista*); Zivotinja RetrieveL(Element, Lista*); void DeleteAllL(Lista*); void InitL(Lista*); // func Element FirstL(Lista* L) { return L; } Element EndL(Lista* L) { Element tren = L; while(tren->slj) tren=tren->slj; return tren; } Element NextL(Element p, Lista* L) { if(p->slj) return p->slj; return ERROR_CODE; } Element PreviousL(Element p, Lista* L) { if(p==FirstL(L) ) return ERROR_CODE; Element tren=FirstL(L); while(tren->slj!=p) tren=tren->slj; return tren; } Element LocateL(Zivotinja x, Lista* L) { for(Element tren=L; tren->slj; tren=tren->slj) if(tren->slj->el == x) return tren; return EndL(L); } bool InsertL(Zivotinja x, Element p, Lista* L) { // *** if(!L) return 0; Element novi = new tEl; memcpy(novi, &x, sizeof(Zivotinja) ); novi->slj = p->slj; p->slj = novi; return 1; } bool DeleteL(Element p, Lista* L) { if(!L) return 0; Element tren = p->slj; p->slj = tren->slj; delete tren; return 1; } Zivotinja RetrieveL(Element p, Lista* L) { return p->slj->el; } void DeleteAllL(Lista* L) { if(!L) return; if(!L->slj) return; Element prev = L->slj; for(Element tren=prev->slj; tren!=NULL; tren=(prev=tren)->slj) delete prev; delete prev; L->slj = NULL; } void InitL(Lista* L) { L->slj = NULL; } #endif // LISTA_POK_H // hackerma3x (2012)