/ Published in: C++
Implementacija liste pomocu pokazivaca
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
using namespace std; struct Zivotinja { int sifra; char vrsta[30]; char naziv[30]; float cijena; struct { int dan, mjesec, godina; }datum_dostave; }; struct List { Zivotinja zivotinja; List *sljedeci; }; typedef List *element; typedef List lista; element FirstL(lista *L) { return L->sljedeci; } element EndL(lista *L) { element tekuci=L->sljedeci; while(tekuci->sljedeci) tekuci=tekuci->sljedeci; return tekuci; } element NextL(element p, lista *L) { return p->sljedeci; } element PreviousL(element p, lista *L) { element tekuci=L; while(tekuci->sljedeci!=p) tekuci=tekuci->sljedeci; return tekuci; } element LocateL (Zivotinja x, lista * L){ element tekuci = L; if (x.naziv == 0) { while (tekuci) { if (tekuci == EndL(L)) return EndL(L); if (tekuci->zivotinja.sifra == x.sifra) return tekuci; tekuci = tekuci->sljedeci; }; return tekuci; } else { while (tekuci) { if (tekuci == EndL(L)) return EndL(L); if (tekuci->zivotinja.naziv == x.naziv) return tekuci; tekuci = tekuci->sljedeci; }; return tekuci; } } int InsertL(Zivotinja x, element p, lista *L) { element tekuci=new lista; element prethodni; tekuci->zivotinja=x; tekuci->sljedeci=p; prethodni=PreviousL(p, L); prethodni->sljedeci=tekuci; if(tekuci->zivotinja.sifra==x.sifra) return 1; else return 0; } int DeleteL(element p, lista *L) { element prethodni; if(p==EndL(L)) return 0; prethodni=PreviousL(p, L); prethodni->sljedeci=p->sljedeci; delete p; return 1; } Zivotinja RetreiveL(element p, lista *L) { return p->zivotinja; } void DeleteAllL(lista *L) { element tekuci=L->sljedeci, sljedeci; while(tekuci) { sljedeci=tekuci->sljedeci; delete tekuci; tekuci=sljedeci; } } lista *InitL(lista *L) { L=new lista; lista *zadnji=new lista; L->sljedeci=zadnji; zadnji->sljedeci=NULL; return L; }