Revision: 60663
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at November 12, 2012 05:34 by Pvrbek
Initial Code
#include<iostream>
using namespace std;
typedef int clan;
struct zivine{
int sifra;
char vrsta[40];
char naziv[40];
float cijena;
int dat[3];
};
struct Zapis_L{
zivine vrj[1000];
int k;
};
typedef struct Zapis_L lis;
clan EndL(lis *L){
return (L->k);
}
clan FirstL(lis *L){
if(L->k==0)
return EndL(L);
else
return 0;
}
zivine RetreiveL(clan p, lis *L){
return L->vrj[p];
}
clan InsertL(zivine x,clan p,lis *L){
if(p>L->k || p<0) return 0;
else{
for( int q=L->k;q>=p;q--)
L->vrj[q+1]=L->vrj[q];
L->k++;
L->vrj[p]=x;
return 1;
}
}
lis *InitL(lis *L){
L=new lis;
L->k=0;
return L;
}
clan NextL(clan p, lis *L){
if(p==EndL(L)-1) return EndL(L);
if(p==EndL(L)) return 0;
else
return p+1;
}
clan PreviousL(clan p, lis *L){
if(p==FirstL(L)) return -1;
if(p==EndL(L)) return p-1;
return p-1;
}
clan DeleteL(clan p, lis *L){
if((L->k==0))
return 0;
if((p>=L->k)||(p<0))
return 0;
if(p==EndL(L))
return 0;
if(p==FirstL(L)){
L->k--;
for( int i=p; i<L->k; i++)
L->vrj[i]=L->vrj[i+1];
return 1;
}
else{
L->k--;
for( int i=p; i<L->k; i++)
L->vrj[i]=L->vrj[i+1];
}
return 1;
}
clan DeleteAll(lis *L){
return L->k==0;
}
clan LocateL(zivine x, lis *L){
clan pozicija=EndL(L);
pozicija=PreviousL(pozicija,L);
if(strlen(x.naziv)>0){
if(FirstL(L)!=EndL(L)){
while(5){
zivine tekuci=RetreiveL(pozicija,L);
if(strcmp(x.naziv,tekuci.naziv)==0)
return pozicija;
if(pozicija==FirstL(L))break;
pozicija=PreviousL(pozicija,L);
}
}
}
if(strlen(x.vrsta)>0){
if(FirstL(L)!=EndL(L)){
while(5){
zivine tekuci=RetreiveL(pozicija,L);
if(strcmp(x.vrsta,tekuci.vrsta)==0)
return pozicija;
if(pozicija==FirstL(L))break;
pozicija=PreviousL(pozicija,L);
}
}
}
return EndL(L);
}
void Merge(lis *L,int i,int k,int j){
int start=i, zad=k+1, br=0, vel=j-i+1;
zivine *pom = new zivine [j-i+1];
while (start<=k && zad<=j){
if(L->vrj[start].cijena>L->vrj[zad].cijena)
pom[br++]=L->vrj[start++];
else if(L->vrj[start].cijena<L->vrj[zad].cijena)
pom[br++]=L->vrj[zad++];
if(L->vrj[start].cijena==L->vrj[zad].cijena){
if(strcmp(L->vrj[start].naziv,L->vrj[zad].naziv)==1)
pom[br++]=L->vrj[start++];
else
pom[br++]=L->vrj[zad++];
}
}
while(start<=k)
pom[br++]=L->vrj[start++];
while(zad<=j)
pom[br++]=L->vrj[zad++];
for(int I=0;I<vel;I++)
L->vrj[i+I]=pom[I];
delete []pom;
}
void Sort(lis *L, int i,int j){
int sred;
if(i<j){
sred=(i+j)/2;
Sort(L,i,sred);
Sort(L,sred+1,j);
Merge(L,i,sred,j);
}
}
void Merge(lis *L,int i,int j){
if(FirstL(L)==EndL(L)){
cout<<"Prazna lista! "<<endl;
return;
}
Sort(L,0,EndL(L)-1);
zivine tekuci;
for(int i=0;i<=EndL(L)-1;i++){
tekuci=L->vrj[i];
cout<<"Sifra: "<<tekuci.sifra<<endl;
cout<<"Naziv: "<<tekuci.naziv<<endl;
cout<<"Datum: "<<tekuci.dat[0]<<"."<<tekuci.dat[1]<<"."<<tekuci.dat[2]<<endl;
cout<<"Vrsta: "<<tekuci.vrsta<<endl;
cout<<"Cijena: "<<tekuci.cijena<<endl;
cout<<endl; }
}
Initial URL
Initial Description
Ovo je moja lista polja koju sam koristio u svom glavnom programu koja je implementirana kao lista pomoću polja
Initial Title
Strukture podataka/Evidencija životinja/Lista polja
Initial Tags
podataka
Initial Language
C++