c++ – ingresar y leer cola

Mediante programación en C++, desarrollar un programa que permita ingresar y leer dato de una cola.

#include<iostream.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<alloc.h>
#include<conio.h>

struct _nodo {int  valor;
             struct _nodo *sig;
             };

typedef struct _nodo *pNodo;
void anadir(pNodo *pri,pNodo *ult,int v);
int leer(pNodo*pri,pNodo *ult);

int main()
{
pNodo pri =NULL,ult=NULL ;
 int op;
 char resp='s';
 int va;
 do{
 clrscr();

gotoxy(10,7);cout<<"***MENU***"<<endl;
gotoxy(10,9);cout<<"[1] Ingresar \n";
gotoxy(10,10);cout<<"[2] Leer\n";
gotoxy(10,11);cout<<"Eliga opcion:[ ]";
gotoxy(24,11);cin>>op;
cout<<endl;

switch(op)
{
case 1: cout<<"anadir elemento : ";
        cin>>va;
        anadir(&pri,&ult,va);
        break;

case 2: cout<<"leer elemento :";
        cout<<leer(&pri,&ult);
        break;
  }

  cout<<endl;
 do{ cout<<"desea continuar[s/n]: ";
   cin>>resp;
     cout<<endl;
   }while(resp!='s'&& resp!='n');
 }while(resp=='s');
  cout<<endl;
 getchar();
 return 0;
}

/***************************************************************/
void anadir(pNodo *pri,pNodo *ult,int v)
{
pNodo nuevo;
nuevo =(pNodo)malloc(sizeof(_nodo));
nuevo->valor=v;
nuevo->sig=NULL;
if(*ult)(*ult)->sig=nuevo;
*ult=nuevo;
if(!*pri)*pri=nuevo;
}

/**************************************************************/
int leer(pNodo*pri,pNodo *ult)
{
 pNodo nodo;
 int v;
 nodo=*pri;
if(!nodo) return 0;
*pri=nodo->sig;
v =nodo->valor;
free(nodo);
if(!*pri ) *ult = NULL;
return v;
}

  Continuando con Colas, les comparto el siguiente post: Dividir Cola