Revision: 60684
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at November 12, 2012 06:32 by markoaleric
Initial Code
#include<iostream> using namespace std; struct tzivotinja{ int sifra, god, mj, dan; float cijena; char vrsta[40], ime[40]; }; struct zapis{ tzivotinja zivotinja; zapis *sljedeci; }; typedef zapis *element; typedef zapis lista; bool brisiime=0; element EndL(lista *L){ return 0; } element FirstL(lista *L){ if(L->sljedeci==NULL) return EndL(L); else return L->sljedeci; } element PreviousL(element p, lista *L){ if(p==FirstL(L)) return 0; if(p==EndL(L)){ while(L->sljedeci) L=L->sljedeci; } else{ while(p!=L->sljedeci) L=L->sljedeci; } return L; } tzivotinja RetreiveL(element p, lista *L){ return p->zivotinja; } int InsertL(tzivotinja x, lista *p, lista *L){ lista *novi; if(p>L->sljedeci || p<0) return 0; if(p==EndL(L)){ while(L->sljedeci) L=L->sljedeci; novi=new lista; L->sljedeci=novi; novi->sljedeci=NULL; novi->zivotinja=x; return 1; } else{ p=PreviousL(p,L); novi=new lista; novi->sljedeci=L->sljedeci; p->sljedeci=novi; novi->zivotinja=x; return 1; } } int DeleteL(element p, lista *L){ element prethodni, tekuci; tekuci=p; if(tekuci==EndL(L))return 0; if(p==FirstL(L)){ L->sljedeci=tekuci->sljedeci; delete tekuci; return 1; } else{ prethodni=PreviousL(tekuci,L); prethodni->sljedeci=tekuci->sljedeci; delete tekuci; return 1; } return 0; } element LocateL(tzivotinja trazi, lista *L){ element pozicija=EndL(L); pozicija=PreviousL(pozicija,L); if(brisiime==1){ if(EndL(L)!=FirstL(L)){ while(true){ tzivotinja tmp=RetreiveL(pozicija,L); if(strcmp(trazi.ime,tmp.ime)==0) return pozicija; if(pozicija==FirstL(L))break; pozicija=PreviousL(pozicija,L); } } } if(brisiime==0){ if(EndL(L)!=FirstL(L)){ while(true){ tzivotinja tmp=RetreiveL(pozicija,L); if(strcmp(trazi.vrsta,tmp.vrsta)==0) return pozicija; if(pozicija==FirstL(L))break; pozicija=PreviousL(pozicija,L); } } } return EndL(L); } tzivotinja RetreiveINT(int p, lista *L){ lista *tekuci = L->sljedeci; for(int i=0;i<p;i++) tekuci=tekuci->sljedeci; return tekuci->zivotinja; } int EndINT(lista *L) { lista *tekuci=L; int p=0; while(tekuci->sljedeci) { tekuci=tekuci->sljedeci; p++; } return p; } lista *InitL(lista *L){ L=new lista; L->sljedeci=NULL; return L; } void VratiL(tzivotinja x,int p,lista *L) { lista* tekuci=L->sljedeci; for(int i=0;i<p;i++) tekuci=tekuci->sljedeci; tekuci->zivotinja=x; } void Spoji(lista *L,int i, int k, int j) { int I=i, J=k+1, K=0; tzivotinja A,B,*POM = new tzivotinja [j-i+1]; while(I<=k && J<=j){ A=RetreiveINT(I,L); B=RetreiveINT(J,L); if(A.cijena < B.cijena) { POM[K++]=A; I++; } else if(A.cijena > B.cijena){ POM[K++]=B; J++; } else if(strcmp(A.ime,B.ime)==1) { POM[K++]=B; J++; } else { POM[K++]=A; I++; } } if(I>k) while(J<=j) { B=RetreiveINT(J++,L); POM[K++] = B; } else while(I<=k) { A=RetreiveINT(I++,L); POM[K++] = A; } for(int I=0;I<=j-i;I++) VratiL(POM[I],i+I,L); delete [] POM; } void Sortiraj(lista *L, int i, int j) { if(i<j) { int k=(i+j)/2; Sortiraj(L,i,k); Sortiraj(L,k+1,j); Spoji(L,i,k,j); } } int MSort(lista *L) { Sortiraj(L,0,EndINT(L)-1); return 1; }
Initial URL
Initial Description
Header lista_pokazivac.h, implementacija liste pomoću pokazivaÄa
Initial Title
Zadatak 1 lista_pokazivac.h
Initial Tags
Initial Language
C++