/ Published in: C++
biblioteka sadrži implementaciju liste pomoću pokazivaÄa (strukture podataka, zadtak 1)
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#include <iostream> struct zivotinja{ int sifra; char vrsta[50]; char naziv[50]; struct { int d,m,g; }datum; float cijena; }; struct lista{ zivotinja z; lista *sljedeci; }; typedef lista *elem; lista* InitL(lista *l){ l = new lista; lista *zadnji = new lista; l->sljedeci = zadnji; zadnji->sljedeci = NULL; return l; } elem EndL(lista *l){ lista *tekuci= l; while(tekuci->sljedeci) tekuci=tekuci->sljedeci; return tekuci; } elem FirstL(lista *l){ if(l == NULL) return EndL(l); else return l->sljedeci; } elem NextL(elem p, lista *l){ if(p->sljedeci==NULL) return EndL(l); return p->sljedeci; } elem PreviousL(elem p, lista *l){ lista *tekuci = l->sljedeci; while(p != tekuci->sljedeci && tekuci->sljedeci!=NULL) tekuci=tekuci->sljedeci; return tekuci; } elem DeleteAllL(lista *l){ l->sljedeci = EndL(l); } int InsertL(zivotinja ziv, lista *p, lista *l){ lista *tekuci=p; lista *novi=new lista; if(p==EndL(l)){ novi->sljedeci=NULL; tekuci->sljedeci=novi; tekuci->z=ziv; } else if(p==FirstL(l)){ novi->sljedeci=tekuci; l->sljedeci=novi; novi->z=ziv; } else{ lista *prethodni=PreviousL(p,l); novi->sljedeci=tekuci; prethodni->sljedeci=novi; novi->z=ziv; } if(tekuci->z.sifra==ziv.sifra) return 1; else return 0; } int DeleteL(elem p, lista *l){ elem prethodni, tekuci; tekuci = p; if(p==FirstL(l)){ l->sljedeci = tekuci->sljedeci; delete tekuci; return 1; } else{ prethodni = PreviousL(tekuci,l); prethodni->sljedeci = tekuci->sljedeci; delete tekuci; return 1; } return 0; } elem LocateL(zivotinja ziv, lista *l){ elem tekuci; tekuci = l->sljedeci; while(tekuci){ if(ziv.sifra!=0){ if(ziv.sifra == tekuci->z.sifra) return tekuci; } tekuci = tekuci->sljedeci; } } zivotinja RetrieveL(elem p, lista *l){ return p->z; }