#include <stdio.h>
#include <stdlib.h>


typedef struct cvor
{
	int br;
	struct cvor* sl;
}CVOR;

CVOR* napravi_cvor(int br)
{
	CVOR* novi=(CVOR*)malloc(sizeof(CVOR));
	if(novi==NULL)
	{
		fprintf(stderr,"greska prilikom alokacije memorije\n");
		exit(1);
	}
	novi->br=br;
	novi->sl = NULL;
	return novi;
}

void ubaci_na_kraj(CVOR** pl,int br)
{
		CVOR* novi=napravi_cvor(br);
		novi->sl=0;

		if(*pl==NULL)
			*pl=novi;
		else
		{
			CVOR* t;
			for(t=*pl;t->sl!=NULL;t=t->sl)
				;
			t->sl=novi;
		}
}

void ubaci_na_pocetak(CVOR** pl, int br)
{
    CVOR* novi = napravi_cvor(br);
    
    if(*pl == NULL)
           *pl = novi;
    else
    {       
	novi->sl = *pl;
	*pl = novi;   
     }
}

void ispisi_listu(CVOR* l)
{
	CVOR* t;
	for (t = l; t != NULL; t=t->sl)
	printf("%d ", t->br);
}
	
void oslobodi_listu(CVOR* l)
{
	while (l)
	{
		CVOR* tmp = l->sl;
		free(l);
		l = tmp;
	}
}

void ubaci_sortirano(CVOR **pl, int br)
{  
     if(*pl == NULL || br< (*pl)->br)    // lazy  izracunavanje
            ubaci_na_pocetak(pl, br);
     else
     {
         CVOR *novi = napravi_cvor(br);
         CVOR* tmp;
         for( tmp = *pl;  tmp->sl != NULL && ((tmp->sl)->br < br);tmp = tmp->sl) ;
         
         novi->sl = tmp->sl;
         tmp->sl = novi;
     }
     return;
}            

void ubaci_sortirano_rekurzivno(CVOR **pl, int br)
{
     if(*pl == NULL || br< (*pl)->br)    // lazy  izracunavanje
            ubaci_na_pocetak(pl, br);
     else 
          ubaci_sortirano_rekurzivno(&((*pl)->sl),br);
     
} 
       
void dodaj_na_red(CVOR **prvi, CVOR **poslednji,int br)
{
     CVOR* novi = napravi_cvor(br);
     if(*prvi == NULL)
     {
              *prvi = novi;
              *poslednji = novi;
     }
     else
         *poslednji = (*poslednji)->sl = novi;         
}

CVOR* izbaci(CVOR **prvi)
{     
      if(prvi==NULL)
                    return NULL;
      CVOR* izbaceni = *prvi;
      *prvi = (*prvi)->sl;
      
      return izbaceni;
}
int main()
{
    int i,br;
    CVOR* prvi=NULL,*poslednji=NULL;    
    CVOR* temp;
    for(i=0;i<10;i++)
    {
         scanf("%d",&br);
         dodaj_na_red(&prvi,&poslednji,br)    ;
    }   
    for(i=0;i<10;i++)
    {
         temp = izbaci(&prvi);
         printf("\n%d",temp->br);
         free(temp);   
    }
    
    
    getchar();getchar();getchar();getchar();getchar();getchar();getchar();
}  
         
         
              
     

