Revision: 60491
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at November 10, 2012 21:54 by hackerma3x
Initial Code
#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)
Initial URL
Initial Description
Datoteka zaglavalja lista pokazivaci
Initial Title
SP - Zadatak 1 - ATP Liste - Lista pokazivaci
Initial Tags
Initial Language
C++