Return to Snippet

Revision: 60651
at November 13, 2012 23:01 by dfilipov


Updated Code
struct s_datum {
	unsigned int dan;
	unsigned int mjesec;
	unsigned int godina;
};

struct s_zapis {
	short sifra;
	char vrsta[50];
	char naziv[50];
	float cijena;
	s_datum datum;
};

struct lista {
	s_zapis zapis;
	lista *NEXT;
};
typedef lista *element;


element EndL(lista *L) {
	lista *LAST = L;
	while (LAST->NEXT)
		LAST = LAST->NEXT;
	
	return LAST;
}

element FirstL(lista *L) {
	if (L->NEXT)
		return L;
	else
		return EndL(L);
}

element NextL(element p, lista *L) {
	if (p->NEXT)
		return p->NEXT;
	else
		return EndL(L);
}

element PreviousL(element p, lista *L) {
	if (p==L) return 0;
	lista *prev = L;
	while (prev->NEXT) {
		if (prev->NEXT == p)
			return prev;
		prev = prev->NEXT;
	}
	return FirstL(L);
}

element LocateL(s_zapis X, lista *L) {
	lista *flow = L->NEXT;
	while (flow) {
		if (!strcmp(flow->zapis.vrsta, X.vrsta))
			return flow;
		else if (!strcmp(flow->zapis.naziv, X.naziv))
			return flow;
		
		flow = flow->NEXT;
	}
	
	return EndL(L);
}

bool InsertL(s_zapis X, element p, lista *L) {
	if (L) {
		element novi = new lista;
		novi->zapis = X;
		novi->NEXT = p->NEXT;
		p->NEXT = novi;
		return true;
	}
	else
		return false;
}

bool DeleteL(element p, lista *L) {
	element prev, flow;
	flow = p;
	if (p == FirstL(L)) {
		L->NEXT = flow->NEXT;
		delete flow;
		return true;
	}
	else if (p != FirstL(L)){
		prev = PreviousL(flow, L);
		prev->NEXT = flow->NEXT;
		delete flow;
		return true;
	}
	else return false;
}

s_zapis RetrieveL(element p, lista *L) {
	return p->zapis;
}

lista *InitL(lista *L) {
	L = new lista;
	L->NEXT = NULL;
	return L;
}

Revision: 60650
at November 12, 2012 04:48 by dfilipov


Initial Code
struct s_datum {
	unsigned int dan;
	unsigned int mjesec;
	unsigned int godina;
};

struct s_zapis {
	short sifra;
	char vrsta[50];
	char naziv[50];
	float cijena;
	s_datum datum;
};

struct lista {
	s_zapis zapis;
	lista *NEXT;
};
typedef lista *element;


element EndL(lista *L) {
	lista *LAST = L;
	while (LAST->NEXT)
		LAST = LAST->NEXT;
	
	return LAST;
}

element FirstL(lista *L) {
	if (L->NEXT)
		return L;
	else
		return EndL(L);
}

element NextL(element p, lista *L) {
	if (p->NEXT)
		return p->NEXT;
	else
		return EndL(L);
}

element PreviousL(element p, lista *L) {
	if (p==L) return 0;
	lista *prev = L;
	while (prev->NEXT) {
		if (prev->NEXT == p)
			return prev;
		prev = prev->NEXT;
	}
	return FirstL(L);
}

element LocateL(s_zapis X, lista *L) {
	lista *flow = L->NEXT;
	while (flow) {
		if (!strcmp(flow->zapis.vrsta, X.vrsta))
			return flow;
		else if (!strcmp(flow->zapis.naziv, X.naziv))
			return flow;
		
		flow = flow->NEXT;
	}
	
	return EndL(L);
}

bool InsertL(s_zapis X, element p, lista *L) {
	if (p) {
		element novi = new lista;
		novi->zapis = X;
		novi->NEXT = NULL;
		if (p->NEXT) novi->NEXT = p->NEXT;
		p->NEXT = novi;
		return 1;
	}
	else
		return false;
}

bool DeleteL(element p, lista *L) {
	element prev, flow;
	flow = p;
	if (p == FirstL(L)) {
		L->NEXT = flow->NEXT;
		delete flow;
		return true;
	}
	else if (p != FirstL(L)){
		prev = PreviousL(flow, L);
		prev->NEXT = flow->NEXT;
		delete flow;
		return true;
	}
	else return false;
}

s_zapis RetrieveL(element p, lista *L) {
	return p->zapis;
}

lista *InitL(lista *L) {
	L = new lista;
	L->NEXT = NULL;
	return L;
}

Initial URL


Initial Description
Zaglavlje lista_pokazivac.h

Initial Title
SP Zadatak 1 - implementacija pomocu pokazivaca

Initial Tags
podataka

Initial Language
C++