/ Published in: C++
Implementacija liste pomocu pokazivaca
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#include <iostream> struct zivotinje{ int sifra; char vrsta[30]; char naziv[30]; int d,m,g,dat; float cijena; }; struct lista{ zivotinje a; lista *sljedeci; }; typedef lista *element; lista* InitL(lista *lis){ lis = new lista; lista *zadnji = new lista; lis->sljedeci = zadnji; zadnji->sljedeci = NULL; return lis; } element EndL(lista *lis){ lista *tekuci= lis; while(tekuci->sljedeci) tekuci=tekuci->sljedeci; return tekuci; } element FirstL(lista *lis){ if(lis == NULL) return EndL(lis); else return lis->sljedeci; } element NextL(element p, lista *lis){ if(p->sljedeci==NULL) return EndL(lis); return p->sljedeci; } element PreviousL(element p, lista *lis){ lista *tekuci = lis->sljedeci; while(p != tekuci->sljedeci && tekuci->sljedeci!=NULL) tekuci=tekuci->sljedeci; return tekuci; } element DeleteAllL(lista *lis){ lis->sljedeci = EndL(lis); } int InsertL(zivotinje ziv, lista *p, lista *lis){ lista *tekuci=p; lista *novi=new lista; if(p==EndL(lis)){ novi->sljedeci=NULL; tekuci->sljedeci=novi; tekuci->a=ziv; } else if(p==FirstL(lis)){ novi->sljedeci=tekuci; lis->sljedeci=novi; novi->a=ziv; } else{ lista *prethodni=PreviousL(p,lis); novi->sljedeci=tekuci; prethodni->sljedeci=novi; novi->a=ziv; } if(tekuci->a.sifra==ziv.sifra) return 1; else return 0; } int DeleteL(element p, lista *lis){ element prethodni, tekuci; tekuci = p; if(p==FirstL(lis)){ lis->sljedeci = tekuci->sljedeci; delete tekuci; return 1; } else{ prethodni = PreviousL(tekuci,lis); prethodni->sljedeci = tekuci->sljedeci; delete tekuci; return 1; } return 0; } element LocateL(zivotinje ziv, lista *lis){ element tekuci; tekuci = lis->sljedeci; while(tekuci){ if(ziv.sifra!=0){ if(ziv.sifra == tekuci->a.sifra) return tekuci; } tekuci = tekuci->sljedeci; } } zivotinje RetrieveL(element p, lista *lis){ return p->a; }