Revision: 60897
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at November 16, 2012 21:13 by Gasholein
Initial Code
#include <iostream>
using namespace std;
struct ljubimci_pok{
int sifra, cijena;
string naziv, vrsta, datum_dostave;
ljubimci_pok *slijedeci;
};
int unos(ljubimci_pok *glv,
int zifra, int cijena,
string datum_dostave,
string naziv,
string vrsta)
{
ljubimci_pok *novi=new ljubimci_pok;
novi->cijena=cijena;
novi->sifra = zifra;
novi->vrsta=vrsta;
novi->naziv=naziv;
novi->datum_dostave=datum_dostave;
if(glv->slijedeci==NULL)
{
glv->slijedeci=novi;
novi->slijedeci=NULL;
}
else
{
novi->slijedeci=glv->slijedeci;
glv->slijedeci=novi;
}
ljubimci_pok *trenutni=glv->slijedeci;
while(trenutni->slijedeci!=NULL && trenutni->sifra!=zifra)
trenutni=trenutni->slijedeci;
if (trenutni->slijedeci==NULL && trenutni->sifra!=zifra)
{
return 0;
}
else
{
return 1;
}
}
void ispis(ljubimci_pok *glv)
{
if(glv->slijedeci == NULL)
{
cout << "\nNema ljubimaca u listi, prvo dodaj neke.\n";
return;
}
ljubimci_pok *trenutni=glv->slijedeci;
cout << "\nUneseni su sljedeci ljubimci:\n\n";
while(trenutni!=NULL){
cout << "\nSifra: " << trenutni->sifra;
cout << "\nVrsta: " << trenutni->vrsta;
cout << "\nNaziv: " << trenutni->naziv;
cout << "\nCijena: " << trenutni->cijena;
cout << "\nDatum dostave: " << trenutni->datum_dostave << "\n-----------------------\n\n";
trenutni=trenutni->slijedeci;
}
}
void trazi(ljubimci_pok *glv)
{
int dan, mjesec, godina, brojalo=0;
string temp;
ljubimci_pok *trenutni=glv->slijedeci;
if(trenutni == NULL)
{
cout << "\nNema ljubimaca listi, prvo dodaj neke.\n";
return;
}
while(trenutni!=NULL)
{
temp=trenutni->datum_dostave.substr(0,2);
dan=atoi(temp.c_str());
temp=trenutni->datum_dostave.substr(3,2);
mjesec=atoi(temp.c_str());
temp=trenutni->datum_dostave.substr(6,4);
godina=atoi(temp.c_str());
if((dan>=23 && mjesec>=9 && godina>=2012) || (mjesec>9 && godina>=2012))
{
cout << "\nSifra: " << trenutni->sifra;
cout << "\nVrsta: " << trenutni->vrsta;
cout << "\nNaziv: " << trenutni->naziv;
cout << "\nCijena: " << trenutni->cijena;
cout << "\nDatum dostave: " << trenutni->datum_dostave << "\n------------------------\n\n";
brojalo++;
}
trenutni=trenutni->slijedeci;
}
cout << "Postoji u bazi podataka " << brojalo << " zivotinja koje su dostavljene nakon 23.rujna 2012.\n\n";
}
int brisi_naziv(ljubimci_pok *glv, string ime)
{
ljubimci_pok *prethodni=glv;
ljubimci_pok *trenutni=glv->slijedeci;
int brojalo=0;
while (trenutni->slijedeci!=NULL)
{
if(trenutni->naziv==ime)
{
prethodni->slijedeci=trenutni->slijedeci;
free(trenutni);
brojalo++;
break;
}
prethodni=trenutni;
trenutni=trenutni->slijedeci;
}
if (brojalo==0)
{
cout << "\nTrazeni zapis nije nadjen u listi.\n";
return 3;
}
trenutni=glv->slijedeci;
while(trenutni->slijedeci!=NULL && trenutni->naziv!=ime)
trenutni=trenutni->slijedeci;
if(trenutni->slijedeci==NULL && trenutni->naziv!=ime)
return 1;
else
return 0;
}
int brisi_vrstu(ljubimci_pok *glv, string ime)
{
ljubimci_pok *prethodni=glv;
ljubimci_pok *trenutni=glv->slijedeci;
int brojalo=0;
while (trenutni->slijedeci!=NULL)
{
if(trenutni->vrsta==ime)
{
prethodni->slijedeci=trenutni->slijedeci;
free(trenutni);
brojalo++;
trenutni=glv;
}
prethodni=trenutni;
trenutni=trenutni->slijedeci;
}
if (brojalo==0)
{
cout << "\nTrazeni zapis nije nadjen u listi.\n";
return 3;
}
trenutni=glv->slijedeci;
while(trenutni->slijedeci!=NULL && trenutni->vrsta!=ime)
trenutni=trenutni->slijedeci;
if (trenutni->slijedeci==NULL && trenutni->vrsta!=ime)
return 1;
else
return 0;
}
int cmp(ljubimci_pok *a, ljubimci_pok *b)
{
return a->cijena - b->cijena;
}
ljubimci_pok *m_sort(ljubimci_pok *lista)
{
ljubimci_pok *p, *q, *e, *rep;
int psize, insize, nmerges, qsize, i;
insize=1;
while(1)
{
p=lista;
lista=NULL;
rep=NULL;
nmerges=0;
while (p)
{
nmerges++;
q=p;
psize=0;
for (i=0; i<insize; i++)
{
psize++;
q=q->slijedeci;
if (!q) break;
}
qsize=insize;
while (psize>0 || (qsize>0 && q))
{
if (psize==0)
{
e=q; q=q->slijedeci; qsize--;
}
else if (qsize==0 || !q)
{
e=p; p=p->slijedeci; psize--;
}
else if (cmp(p,q) <=0)
{
e=p; p=p->slijedeci; psize--;
}
else
{
e=q; q=q->slijedeci; qsize--;
}
if (rep)
{
rep->slijedeci=e;
}
else
{
lista=e;
}
rep=e;
}
p=q;
}
rep->slijedeci=NULL;
if (nmerges<=1)
{
return lista;
}
insize *= 2;
}
}
Initial URL
Initial Description
primjer moje liste s pokazivacima
Initial Title
lista_pokazivac
Initial Tags
Initial Language
C++