Posted By

msestak2 on 11/10/12

Lista_pokazivaci.h

/ Published in: C++

U ovoj biblioteci su definirane funkcije za izvrÅ¡avanje operacija nad ATP listom: iniciranje prazne liste(InitL), funkcije koje vraÄ‡aju pozicije prvog i zadnjeg elementa(FirstL i EndL), funkcija za umetanje elementa(InsertL), funkcija koja vraÄ‡a vrijednost elementa na nekoj poziciji(RetrieveL) te funkcije za brisanje pojedinog elementa(DeleteL) ili cijele liste(DeleteAllL).

`struct elementtype{	int sifra;	char naziv[30];	char vrsta[30];	float cijena;	struct{		int dan, mjesec, godina;	}datum_dostave;}; struct lis {	elementtype value;	lis *next;}; typedef lis *element;typedef lis list; void DeleteAllL(list* L){	while(L->next){		element toDelete = L->next;		if(L->next){			L->next = toDelete->next;			delete toDelete;		}	}	delete L;	L = NULL;}  list* InitL(list* L){	if(L!=NULL)		DeleteAllL(L);	else{		list *newList = new list;		newList->next = NULL;		return newList;	}	return NULL;} element FirstL(list* L){	return L;} element EndL(list* L){	element current = L;	while(current->next){		current = current->next;	}	return current;} element NextL(element p, list *L){	if(p!=NULL){		if(p==EndL(L)){			return NULL;		}		return p->next;	}	return EndL(L);} element PreviousL(element p, list *L){		element current = L;		while(current){			if(current->next == p )				return current;			current = current->next;		}		return NULL;} element LocateL(elementtype el, list* L){	element current = L;	while(current->next){		if(current->next->value.sifra == el.sifra)			return current;		current = current->next;	}	return NULL;} void InsertL(elementtype el, element p, list* L){	if(p==NULL)		return;	else{		element novi = new lis;		novi->value = el;		novi->next = p->next;		p->next = novi;	}} void DeleteL(element p, list* L){	element toDelete = p->next;	if(toDelete){		p->next = toDelete->next;		delete toDelete;	}} elementtype RetrieveL(element p, list* L){			return p->next->value;}`