Return to Snippet

Revision: 60897
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++