/ Published in: C++
Implementacija liste pomoću pokazivača
Expand |
Embed | Plain Text
#include <cstring> struct zivotinje { int sifra, cijena, d, m, g; char naziv [20], vrsta [30]; }; struct LIST { zivotinje ziv; LIST *sljedeci; }; typedef LIST *element; element endL(LIST* L) { LIST *tekuci = L; while (tekuci->sljedeci) tekuci = tekuci->sljedeci; return tekuci; }; element firstL (LIST *L) { if (L->sljedeci) return L; else return endL(L); }; element nextL (element position, LIST *L) { if (position->sljedeci) return position->sljedeci; else return endL(L); }; element previousL (element position, LIST *L){ if (position == L) return 0; LIST *tekuci = L; while (tekuci->sljedeci) { if (tekuci->sljedeci == position) return tekuci; tekuci = tekuci->sljedeci; } }; element locateL (zivotinje z, LIST *L) { LIST *tekuci = L; while (tekuci) { if (tekuci->sljedeci && tekuci->sljedeci->ziv.naziv == z.naziv) return tekuci; tekuci = tekuci->sljedeci; } return endL(L); }; element insertL (zivotinje z, element position, LIST *L) { if (position) { LIST *novi = new LIST; novi->ziv.sifra = z.sifra; novi->ziv.d = z.d; novi->ziv.m = z.m; novi->ziv.cijena = z.cijena; novi->ziv.g = z.g; strcpy (novi->ziv.vrsta, z.vrsta); strcpy (novi->ziv.naziv, z.naziv); if (position->sljedeci){ novi->sljedeci = position->sljedeci; } else { novi->sljedeci = NULL; position->sljedeci = novi; } } else return 0; }; element deleteL (element position, LIST *L) { if (position && position->sljedeci) { LIST *pom = position->sljedeci; position->sljedeci = position->sljedeci->sljedeci; delete pom; } else return 0; }; zivotinje retrieveL (element position, LIST *L) { zivotinje ziv; if (position && position->sljedeci) { ziv.sifra = position->sljedeci->ziv.sifra; ziv.cijena = position->sljedeci->ziv.cijena; ziv.d = position->sljedeci->ziv.d; ziv.m = position->sljedeci->ziv.m; ziv.g = position->sljedeci->ziv.g; strcpy (ziv.vrsta, position->sljedeci->ziv.vrsta); strcpy (ziv.naziv, position->sljedeci->ziv.naziv); return ziv; } }; void deleteallL (LIST *L) { LIST *prvi = L->sljedeci, *tekuci; while (prvi) { tekuci = prvi; prvi = prvi->sljedeci; delete tekuci; } }; LIST* initL (LIST *L) { L = new LIST; L->sljedeci = NULL; return L; };
You need to login to post a comment.
