/ Published in: C++
lista s pokazivacima
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#include <cstring> struct tziv { int sifra , d, m, g; float cijena; char naziv [20], vrsta [20]; }; struct list{ tziv ziv; list *sljedeci; }; typedef list *elem; elem EndL(list *l) { list *tekuci = l; while (tekuci->sljedeci) tekuci = tekuci->sljedeci; return tekuci; }; elem FirstL (list *l) { if (l->sljedeci) return l; else return EndL(l); }; elem NextL (elem pozicija, list *l) { if (pozicija->sljedeci) return pozicija->sljedeci; else return EndL(l); }; elem PreviousL (elem pozicija, list *l){ if (pozicija == l) return 0; list *tekuci = l; while (tekuci->sljedeci) { if (tekuci->sljedeci == pozicija) return tekuci; tekuci = tekuci->sljedeci; } }; elem LocateL (tziv 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); }; elem InsertL (tziv z, elem pozicija, list *l) { if (pozicija) { 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 (pozicija->sljedeci){ novi->sljedeci = pozicija->sljedeci; } else { novi->sljedeci = NULL; pozicija->sljedeci = novi; } } else return 0; }; elem DeleteL (elem pozicija, list *l) { if (pozicija && pozicija->sljedeci) { list *pom = pozicija->sljedeci; pozicija->sljedeci = pozicija->sljedeci->sljedeci; delete pom; } else return 0; }; tziv RetrieveL (elem pozicija, list *l) { tziv ziv; if (pozicija && pozicija->sljedeci) { ziv.sifra = pozicija->sljedeci->ziv.sifra; ziv.cijena = pozicija->sljedeci->ziv.cijena; ziv.d = pozicija->sljedeci->ziv.d; ziv.m = pozicija->sljedeci->ziv.m; ziv.g = pozicija->sljedeci->ziv.g; strcpy (ziv.vrsta, pozicija->sljedeci->ziv.vrsta); strcpy (ziv.naziv, pozicija->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; };