Listas enlazadas

Eliminar y buscar en una lista

Mediante un programación en C++, desarrollar un programa haciendo uso de listas para eliminar elemento al inicio, insertar al inicio, imprimir promedio y búsqueda de elemento.

#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
struct nodo{
           int nro;
           struct nodo*sgte;
           };
typedef struct nodo*Tlista;
void eliminainicio(Tlista &);
void insertalinicio(Tlista &, int);
void imprimir(Tlista);
int promedio(Tlista &);
int busqueda(Tlista &,int);
void main()
{
Tlista lista=NULL;
int opc,valor,n,i,ele,prm;
do{
  cout<<"1.Insertar elementos:"<<endl;
  cout<<"2.Eliminar al inicio:"<<endl;
  cout<<"3.Promedio:"<<endl;
  cout<<"4.Buscar"<<endl;
  cout<<"5.Lista:"<<endl;
  cout<<"6. Salir"<<endl;
  cout<<"Ingrese una opcion:"<<endl;cin>>opc;
  switch(opc)
  {
  case 1:
  cout<<"Numero de elementos";cin>>n;
  for(i=0;i<n;i++)
  {
  cout<<"Ingrese elementos = ";cin>>valor;
  insertalinicio(lista,valor);
  }
  break;
  case 2:
  cout<<"Elimina al inicio";
  eliminainicio(lista);
  break;
  case 3:
  cout<<endl<<"Promedio"<<endl;
  prm=promedio(lista);
  cout<<"El promedio de la lista es:"<<prm<<endl;
  break;
  case 4:
  cout<<endl<<"numero que desea buscar=";
  cin>>ele;
  if(busqueda(lista,ele)==1)
  cout<<"elemento encontrado.n";
  else
  cout<<"elemento no encontrado.n";
  break;
  case 5:
  cout<<endl<<"Listado"<<endl;
  imprimir(lista);
  break;
  }
  }while(opc!=6);
}
void imprimir(Tlista lista)
{
while(lista!=NULL)
 {
 cout<nro<<endl;
 lista=lista->sgte;
 }
cout<<endl;
}
void insertalinicio(Tlista &lista,int valor)
{
Tlista q;
q=new(struct nodo);
q->nro=valor;
q->sgte=lista;
lista=q;
}
void eliminainicio(Tlista &lista)
{
struct nodo*p;
if(lista!=NULL)
 {
 p=lista;
 lista=lista->sgte;
 delete(p);
 }
}
int promedio(Tlista &lista)
 {
   Tlista q;
   q=lista;
   int c=0,s=0,x;
   while(q!=NULL)
   {
     s=s+q->nro;
     c=c+1;
     q=q->sgte;
   }
   x=s/c;
   return x;
 }
int busqueda(Tlista &lista, int ele)
{
Tlista q;
q=lista;
while(q!=NULL)
 {
 if(q->nro==ele)
 return 1;
 q=q->sgte;
 }
 return 0;
 }

  Continuando con Listas enlazadas, les comparto el siguiente post: Insertar, eliminar lista, mostrar pares e impares