#include <stdio.h>
#include <stdlib.h>
   struct el { 
               int duom;
               struct el *kitas;
               struct el *pries;
             };
void Sukurti_sar ( struct el ** , struct el** );
void Spausdinti_sar ( struct el * );
void atvirkscias_sar( struct el **pr, struct el **pb );

int main()
{
    struct el *pradzia, *pabaiga, *elem;
    
    Sukurti_sar ( &pradzia, &pabaiga );
    Spausdinti_sar ( pradzia );
        
    atvirkscias_sar( &pradzia, &pabaiga );
    Spausdinti_sar ( pradzia );
    
    system("PAUSE");
    return 0; /* tik Windows */
}

void atvirkscias_sar( struct el **pr, struct el **pb ) 
{
     struct el *tarp, *g; 
     
     g = *pr;
     while (g != NULL)
     {
         tarp = g->kitas;
         g->kitas = g->pries;
         g->pries = tarp;
         g = g->pries;
     }
     tarp = *pr;
     *pr = *pb;
     *pb = tarp;
}

void Sukurti_sar ( struct el * *pr, struct el * *pab )
{
     struct el *g;
     int reiksme;
     puts ("Iveskite saraso elementus. Noredami baigti, iveskite 0:" );
     *pr = NULL;
     *pab = NULL;
     scanf("%d", &reiksme);
     while( reiksme != 0 )
     {
      if ( *pr == NULL)
         {
            g = (struct el *) malloc(sizeof(struct el));
            g->duom = reiksme;
            g->kitas = NULL;
            g->pries = NULL;
            *pab = g;
            *pr = g;
         }
      else
         {
         g = (struct el *) malloc(sizeof(struct el));
         g->duom = reiksme;
         g->kitas = NULL;
         (*pab)->kitas = g;
         g->pries = *pab;
         *pab = g;
         }
      scanf( "%d", &reiksme );
         }
     puts("Sarasas sekmingai sukurtas");
     }
/* Spausdinti nuo pradzios */
void Spausdinti_sar (struct el *elem)
{
     int i=1;
     puts("*****************************************");
     puts("Spausdiname sarasa:");
     while ( elem != NULL )
     {
         printf( "%d elementas yra %d \n", i, elem->duom );
         elem = elem->kitas;
         i++;
     }
}
           
