#include<stdlib.h>
#include<conio.h>
#include<stdio.h>

typedef int type;

struct _elem
{

 type val;
 struct _elem *next;

};

typedef struct _elem elem;

void TOcreate(elem **pelem)
{
 *pelem=NULL;
}

int empty(elem *pelem)
{
 return (!pelem);
}

void TOkill(elem **pelem)
{
 elem *temp;
 if (empty(*pelem)) return;
 while (*pelem!=NULL)
  {
   temp=*pelem;
  *pelem=(*pelem)->next;
   free(temp);
  }
}


void TOadd(elem **pelem, int datain)
{
    elem *temp;

    temp=(elem*)malloc(sizeof(elem));
    temp->val=datain;
    temp->next=NULL;
    if (!empty(*pelem))
    {
	temp->next=*pelem;
    }
    *pelem=temp;
}

int TOdelElem(elem **pelem)
{
 int dataoff;
 elem *temp;
 if (empty(*pelem)) return 0;
 else
 {
  temp=*pelem;
  *pelem=(*pelem)->next;
  dataoff=temp->val;
  free(temp);
 }
 return dataoff;
}

void TOshow(elem *pelem)
{

    for(;pelem;pelem=pelem->next)

    {
	printf("%d ", pelem->val);
    }
    printf("\n");
}

int main()
{
 elem *pelem;
 clrscr();
 TOcreate(&pelem);
 TOadd(&pelem,10);
 TOadd(&pelem,7);
 TOadd(&pelem,21);
 TOshow(pelem);
 printf("\n%d\n",TOdelElem(&pelem));
 printf("\n%d\n",TOdelElem(&pelem));
 TOkill(&pelem);
 return 0;
}