/ Published in: C++
Zadatak kolegija "Strukture podataka" na Fakultetu Organizacije i Informatike u Varaždinu. Trebalo je napraviti program koji služi za evidenciju kućnih ljubimaca u trgovini za kućne ljubimce, i to pomoću ATP liste implementirane poljem i pokazivaÄima. Ovo je samo zaglavlje koje treba "glavna.cpp" kako bi radilo
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
/* * lista_pokazivaci.h * * Created on: Nov 8, 2012 * Author: David Ante Macan */ #ifndef LISTA_POKAZIVACI_H_ #define LISTA_POKAZIVACI_H_ #include<iostream> using namespace std; int provjera = 1; struct tziv{ int sifra; char vrsta[20]; char naziv[20]; float cijena; int datum[3]; }; struct tlista{ tziv ziv; tlista *kursor; }; typedef tlista *tip; tip FirstL(tlista *L){ return L->kursor; } tip EndL(tlista *L){ tlista *tekuci = L; while(tekuci->kursor){ tekuci=tekuci->kursor; } return tekuci->kursor; } tip PreviousL(tip p, tlista *L){ if(L->kursor==NULL) return L; tlista *prosli = L->kursor; while(prosli->kursor!=p){ prosli=prosli->kursor; } return prosli; } tip NextL(tip p, tlista *L){ if(p->kursor==NULL) return EndL(L); return p->kursor; } tlista *InitL(tlista *L){ L = new tlista; L->kursor = NULL; return L; } tip LocateL(tziv x, tlista *L){ tip tekuci; tekuci = L->kursor; while(tekuci){ if(x.sifra!=0){ if(x.sifra == tekuci->ziv.sifra) return tekuci; } } return EndL(L); } int InsertL(tziv x, tlista *p, tlista *L){ tlista *novi = new tlista; tlista *prosli = PreviousL(p,L); if(p==EndL(L)){ novi->kursor = NULL; prosli->kursor = novi; novi->ziv = x; } else{ novi->kursor=prosli->kursor; prosli->kursor = novi; novi->ziv = x; } if(novi->ziv.sifra == x.sifra) return 1; else return 0; } tziv RetrieveL(tip p, tlista *L){ return p->ziv; } tip DeleteL(tip p, tlista *L){ tlista *prethodni, *tekuci; tekuci=p; if(tekuci==EndL(L))return 0; if(p==FirstL(L)){ L->kursor=tekuci->kursor; delete tekuci; return 0; } else{ prethodni=PreviousL(tekuci,L); prethodni->kursor=tekuci->kursor; delete tekuci; return 0; } return 0; } tip DeleteAllL(tlista *L){ tlista *tekuci = L->kursor; tlista *iduci; while(tekuci!=NULL){ iduci = tekuci->kursor; delete tekuci; tekuci = iduci; } L->kursor = NULL; return 0; } void Merge(tziv array[], int i, int k, int j){ int pocetak = i, iduci = k+1, brojilo=0, velicina = j-i+1; tziv *pom = new tziv[velicina]; while(pocetak<=k && iduci<=j){ if(array[pocetak].cijena > array[iduci].cijena) pom[brojilo++]=array[pocetak++]; else if(array[pocetak].cijena < array[iduci].cijena) pom[brojilo++] = array[iduci++]; if(array[pocetak].cijena == array[iduci].cijena){ if(strcmp(array[pocetak].naziv, array[iduci].naziv)==1) pom[brojilo++] = array[pocetak++]; else pom[brojilo++] = array[iduci++]; } } while(pocetak<=k) pom[brojilo++] = array[pocetak++]; while(iduci<=j) pom[brojilo++] = array[iduci++]; for(int I=0; I<velicina; I++) array[i+I]=pom[I]; delete[] pom; } void funkcija(tziv array[], int i, int j){ int sredina; if(i<j){ sredina = (i+j)/2; funkcija(array,i,sredina); funkcija(array,sredina+1,j); Merge(array,i,sredina,j); } } void MSort(tlista *L, tip i, tip j){ if(FirstL(L)!=EndL(L)){ int velicina = 0, brojilo = 0; tip zadnji; zadnji = L; while(zadnji->kursor){ zadnji = zadnji->kursor; velicina++; } tziv *pom = new tziv[velicina]; tip lokacija = L->kursor; while(lokacija){ pom[brojilo++] = RetrieveL(lokacija,L); lokacija = lokacija->kursor; } funkcija(pom,0,velicina-1); for(int i=0; i<=velicina-1; i++){ cout<<"\n\n" <<"Sifra zivotinje: "<<pom[i].sifra<<endl <<"Vrsta zivotinje: "<<pom[i].vrsta<<endl <<"Naziv zivotinje: "<<pom[i].naziv<<endl <<"Cijena zivotinje: "<<pom[i].cijena<<endl <<"Datum dostave: "<<pom[i].datum[2]<<"."<<pom[i].datum[1]<<"."<<pom[i].datum[0]<<"."<<endl <<"-------------------------------------"<<endl<<endl; } } else cout<<"Lista ne postoji ili je prazna"<<endl; } #endif /* LISTA_POKAZIVACI_H_ */