#include <iostream>
using namespace std;

struct tgames{
        int sifra;
        char zanr[30];
        char podzanr[30];
        char naziv[30];
        char proizvodac[30];
        float cijena;
        int PEGI;
        };
        
 struct tlista{
        tgames game[1000];
        int kursor;
        };
        
 typedef int el;
 
 el EndL(tlista *glava){
        return glava->kursor;
        }

 el FirstL(tlista *glava){
    if(glava->kursor==0) return EndL(glava);
    return 0;
     };
        
 
        
 el NextL(el p,tlista *glava){
        if (p==EndL(glava)-1) return EndL(glava);
        else return p+1;
        }
        
 el PreviousL(el p,tlista *glava){
        if(p==FirstL(glava)) cout << "Funkcija nije definirana!" << endl;
        else if(p==EndL(glava)) return EndL(glava)-1;
        else return p-1;
        }
 
 el LocateL(char x[30], tlista *glava){
     for(int i=0;i<1000;i++){
             if( (strcmp(glava->game[i].naziv,x))==0) return i;
             if( (strcmp(glava->game[i].zanr,x))==0) return i;
             }
     
     return EndL(glava);
     };
     
 el LocateSL(int x, tlista *glava){
     for(int i=0;i<1000;i++){
             if(glava->game[i].sifra == x) return i;
             }
     
     return EndL(glava);
     };
     
 
                
 void InsertL(tgames x, el p, tlista *glava){
      if(glava->kursor!=0){
                            for(el i=EndL(glava);i>p;i--){
              glava->game[i]=glava->game[i-1];}
      glava->game[p]=x;}
      else{
           glava->game[p]=x;}
      glava->kursor+=1;      
      };
      
 void DeleteL(el p, tlista *glava){
      for(el i=p;i<EndL(glava);i++){
              glava->game[i]=glava->game[i+1];}
      glava->kursor-=1;
      };
      
 tgames RetreiveL(el x, tlista *glava){
       return glava->game[x];
       };
       
 void DeleteAllL(tlista *glava){
      glava->kursor=0;
      };
      
 void InitL(tlista *glava){
      glava->kursor=0;
      };