struct igra{
	int sifra, PEGI;
	string naziv, proizvodac, zanr, podzanr;
};

struct list {
	igra igre[10000];
	int pokazivac;
};

typedef list lista;
typedef int element;

element EndL(lista *L){
	return L->pokazivac;
}

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

element NextL(element p, lista *L){
	if(p < FirstL(L) || p >= EndL(L))
		return 0;
	else
		return p + 1;
}

element PreviousL(element p, lista *L){
	if(p <= FirstL(L) || p > EndL(L))
		return 0;
	else
		return p - 1;
}

element LocateL(igra x, lista *L){
	for(int i=0; i<L->pokazivac; i++)
		if(x.sifra == L->igre[i].sifra)
			return i;
}

bool InsertL(igra x, element p, lista *L){
	if(p >= FirstL(L) && p <= EndL(L)){
		for(int i=EndL(L); i>p; i--)
			L->igre[i] = L->igre[i-1];
		L->igre[p] = x;
		L->pokazivac++;
	}
	else
		cout << "Umetanje nije uspjelo!\n";
}

void DeleteL(element p, lista *L){
	if(p < FirstL(L) || p >= EndL(L))
		cout << "Brisanje nije uspjelo!\n";
	else{	
		for(int i=p; i<EndL(L); i++)
			L->igre[i] = L->igre[i+1];
		L->pokazivac--;
	}
}

igra RetreiveL(element p, lista *L){
	if(p < FirstL(L) || p >= EndL(L))
		cout << "Dohvacanje nije uspjelo!\n";
	else{
		return L->igre[p];
	}
}

void DeleteAllL(lista *L){
	L->pokazivac = 0;
}

void InitL(lista *L){
	L->pokazivac = 0;
}