Return to Snippet

Revision: 60578
at November 11, 2012 22:45 by supavkovii


Initial Code
struct zivotinja{
       int sifra;
       char vrsta[20],naziv[20];
       float cijena;
       char datum[15];
       zivotinja *slijedeci;
       };
       
typedef zivotinja pomocna;
typedef zivotinja *tip;
       
zivotinja *InitL(zivotinja *&lista){
	lista=new zivotinja;
	lista->slijedeci=NULL;
	return lista;
}
zivotinja* EndL(zivotinja *lista){
	zivotinja *pom=lista;
	while(pom->slijedeci)
		pom=pom->slijedeci;
	return pom->slijedeci;
}
zivotinja* FirstL(zivotinja *lista){
	if(lista->slijedeci==NULL) return EndL(lista);
	return lista->slijedeci;
}
zivotinja* NextL(zivotinja* p, zivotinja *lista){
	if(p->slijedeci==NULL) return 0;// zadnji elementa (=NULL) nema sljedeci pokazivac -> error
	return p->slijedeci;
}
zivotinja* PreviousL(zivotinja* p, zivotinja *lista){
	if(lista->slijedeci==NULL) return 0;// 1. element nema prethodnog -> error
	zivotinja *pom=lista;
	while(pom->slijedeci && p!=pom->slijedeci)
		pom=pom->slijedeci;
	return pom;
}
zivotinja* LocateL(int sifra, zivotinja *lista){// trazi sifru
	zivotinja *pom=lista->slijedeci;
	while(pom){
		if(pom->sifra==sifra) return pom;
		pom=pom->slijedeci;
	}
	return EndL(lista);
}
bool InsertL(zivotinja x, zivotinja* p, zivotinja *lista){// na p dodajemo x
	zivotinja *pom=new zivotinja;
	pom->slijedeci=NULL;
	pom->sifra=x.sifra;
	pom->cijena=x.cijena;
	strcpy(pom->datum,x.datum);
	strcpy(pom->naziv,x.naziv);
	strcpy(pom->vrsta,x.vrsta);

	if(lista->slijedeci==NULL) p=lista; // dodavanje 1. elementa
	if(p==NULL && PreviousL(p,lista)) p=PreviousL(p,lista); // na EndL

	pom->slijedeci=p->slijedeci;
	p->slijedeci=pom;
	return true;
}
zivotinja RetrieveL(zivotinja* p, zivotinja *lista){
	zivotinja pom;
	if(p!=NULL){
        	pom.sifra=p->sifra;
	        pom.cijena=p->cijena;
	        strcpy(pom.datum,p->datum);
	        strcpy(pom.naziv,p->naziv);
	        strcpy(pom.vrsta,p->vrsta);	
	}
	return pom;
}
bool DeleteL(zivotinja* p, zivotinja *lista){
	if(p && p->slijedeci){
		zivotinja* pom=p->slijedeci; // brisemo p->slijedeci
		p->slijedeci=p->slijedeci->slijedeci;
		delete pom;
		return true;
	}
	else return false;
}
void DeleteAllL(zivotinja *lista){
	zivotinja* pom;
	while(lista->slijedeci){
		pom=lista->slijedeci;
		lista->slijedeci=lista->slijedeci->slijedeci;
		delete pom;
	}
}

Initial URL


Initial Description
datoteka zaglavlja s funkcijama za implementaciju liste pomoću pokazivača

Initial Title
lista_pokazivaci.h

Initial Tags


Initial Language
C++