Listas enlazadas

multiplicación de una lista

Mediante programación en C++, Hacer un programa que permita multiplicar los elementos de una lista.

#include<iostream.h>
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
struct nodo{
           int nro;
           struct nodo*sgte;
           };
typedef struct nodo*Tlista;
void eliminainicio(Tlista &);
void eliminafin(Tlista &);
void eliminalista(Tlista &);
void insertalinicio(Tlista &, int);
int multiplicacion(Tlista &);
void imprimir(Tlista);
void main()
{
Tlista lista=NULL;
int opc,valor,n,i;
do{
  cout<<"1.Insertar elementos:"<<endl;
  cout<<"2.Eliminar al inicio:"<<endl;
  cout<<"3.Eliminar al final:"<<endl;
  cout<<"4.Multiplicacion de la lista:"<<endl;
  cout<<"5.Listado:"<<endl;
  cout<<"6.Salir:"<<endl;
  cout<<"Ingrese una opcion:"<<endl;cin>>opc;
  switch(opc)
  {
  case 1:{clrscr();
  cout<<"Numero de elementos";cin>>n;
  for(i=0;i<n;i++)
  {
  cout<<"Ingrese elementos = ";cin>>valor;
  insertalinicio(lista,valor);
  }
  break;
  }
  case 2:{clrscr();
  cout<<"Elimina al inicio";
  eliminainicio(lista);
  break;
  }
  case 3: {clrscr();
  cout<<"Elimina al final";
  eliminafin(lista);
  break;
  }
  case 4:{clrscr();
  cout<<"La multiplicacion de la lista es:"<<multiplicacion(lista)<<endl;
  break;
  }
  case 5:{clrscr();
  cout<<endl<<"Listado"<<endl;
  imprimir(lista);
  break;
  }
  }
  }while(opc!=6);
  clrscr();
}

void imprimir(Tlista lista)
{
while(lista!=NULL)
 {
 cout<<lista->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);
 }
}
void eliminafin(Tlista &lista)
{
Tlista p,ant;
if(lista==NULL)return;
p=lista;
if(lista->sgte==NULL)
lista=lista->sgte;
else
 {
 while(p->sgte!=NULL)
  {
  ant=p;
  p=p->sgte;
  }
 ant->sgte=NULL;
 }
delete(p);
}
int multiplicacion(Tlista &lista)
{int m=1;
if(lista==NULL)
return 0;
 while(lista!=NULL)
 {
 m=m*lista->nro;
 lista=lista->sgte;
 }
 return m;
}

  Continuando con Listas enlazadas, les comparto el siguiente post: Sumar una lista en Borland C++