/ Published in: C++
Datoteke zaglavlja - listapolje.h i listapokazivac.h
Expand |
Embed | Plain Text
Lista_polje.h struct strukDatum { int dan,godina; char mjesec[16]; }; struct zivotinja { int sifra; char vrsta[64],naziv[64]; strukDatum datum; float cijena; }; struct listaPolje { zivotinja ljubimac[12000]; int cursor; }; listaPolje lista; int sifra = 1, brojElemenata = 0; void InitL(listaPolje& lista) { lista.cursor=0; } void InsertL(zivotinja x, int p, listaPolje& lista) { lista.ljubimac[p] = x; lista.cursor++; } zivotinja RetrieveL(int p, listaPolje& lista) { return lista.ljubimac[p]; } int EndL(listaPolje& lista) { return lista.cursor; } int LocateL(char x[], listaPolje& lista) { int p = EndL(lista); bool lociran = 0; int i = 0; for(i; i<p; i++) if(!strcmp(lista.ljubimac[i].naziv, x) || !strcmp(lista.ljubimac[i].vrsta, x)) { lociran = 1; return i; } if(!lociran) return p; } void DeleteL(int p, listaPolje& lista) { if(p == EndL(lista) - 1) lista.cursor--; else { for(int i=p; i<EndL(lista)-1; i++) lista.ljubimac[i] = lista.ljubimac[i + 1]; lista.cursor--; } } int FirstL(listaPolje& lista) { if(EndL(lista) == 0) return EndL(lista); return 0; } int PreviousL(int p, listaPolje& lista) { if(p == FirstL(lista)) return -1; return p - 1; } int NextL(int p, listaPolje& lista) { if(p == EndL(lista)) return -1; if(p == EndL(lista) - 1) return EndL(lista); return p + 1; } void DeleteAll(listaPolje& lista) { lista.cursor = 0; } void Vrati(zivotinja x, int p, listaPolje& lista) { lista.ljubimac[p] = x; } Lista_pokazivac.h struct strukDatum { int dan,godina; char mjesec[16]; }; struct zivotinja { int sifra; char vrsta[64],naziv[64]; strukDatum datum; float cijena; }; struct listaPokazivac { zivotinja ljubimac; listaPokazivac *sljedeci; }; listaPokazivac *lista = new listaPokazivac; int sifra = 1, brojElemenata = 0; void InitL(listaPokazivac *lista) { lista->sljedeci = NULL; } void InsertL(zivotinja x, int p, listaPokazivac *lista) { listaPokazivac *zadnji = lista; for(int i=0; i<p; i++) zadnji = zadnji->sljedeci; if(zadnji->sljedeci == NULL) { listaPokazivac *novi = new listaPokazivac; zadnji->sljedeci = novi; novi->ljubimac = x; novi->sljedeci = NULL; } else { listaPokazivac* novi = lista; for(int i=0; i<=p; i++) novi = novi->sljedeci; novi->ljubimac = x; } } zivotinja RetrieveL(int p, listaPokazivac* lista) { listaPokazivac *tekuci = lista->sljedeci; for(int i=0; i<p; i++) tekuci = tekuci->sljedeci; return tekuci->ljubimac; } int EndL(listaPokazivac *lista) { listaPokazivac* tekuci = lista; int p = 0; while(tekuci->sljedeci) { tekuci = tekuci->sljedeci; p++; } return p; } void DeleteL(int p, listaPokazivac *lista) { listaPokazivac *brisi = lista->sljedeci,*prethodni=lista; for(int i=0; i<p; i++) { prethodni = brisi; brisi = brisi->sljedeci; } prethodni->sljedeci = brisi->sljedeci; delete brisi; } int LocateL(char x[], listaPokazivac* lista) { listaPokazivac *tekuci = lista; int p=0; while(tekuci) { if(tekuci->sljedeci == NULL) return EndL(lista); if(!strcmp((tekuci->sljedeci)->ljubimac.naziv, x)||!strcmp((tekuci->sljedeci)->ljubimac.vrsta, x)) return p; tekuci = tekuci->sljedeci; p++; } } int FirstL(listaPokazivac* lista) { if(lista->sljedeci == NULL) return EndL(lista); return 0; } int PreviousL(int p, listaPokazivac* lista) { if(p == FirstL(lista)) return -1; return p - 1; } int NextL(int p,listaPokazivac* lista) { if(p == EndL(lista)) return -1; if(p == PreviousL(EndL(lista), lista)) return EndL(lista); return p + 1; } void DeleteAll(listaPokazivac* lista) { listaPokazivac* prethodni = lista, *tekuci = lista->sljedeci; while(tekuci) { delete prethodni; prethodni = tekuci; tekuci = tekuci->sljedeci; } delete prethodni; lista = NULL; } void Vrati(zivotinja x, int p, listaPokazivac* lista) { listaPokazivac* tekuci = lista->sljedeci; for(int i = 0; i < p; i++) tekuci = tekuci->sljedeci; tekuci->ljubimac = x; }
You need to login to post a comment.
