ayuda sobre listas simples
estoy haciendo un proyecto de listas simples y tengo un error al mostrar la lista, tengo dos funciones para mostrar los elementos de la lista y ninguno imprime nada, agradecería su ayuda //Proyecto 1 Progra 1 #include <iostream> #include <string.h> #include <fstream> #include <stdlib.h> using namespace std; struct Nodo{ int dato; Nodo *siguiente; }; Nodo *lista=NULL; void IngresarInicio(Nodo *&lista,int n){ Nodo *NuevoNodo=new Nodo(); NuevoNodo->dato=n; Nodo *aux1=lista; Nodo *aux2; while((aux1 !=NULL)&&(aux1->dato<n)){ lista=NuevoNodo; NuevoNodo->siguiente=aux1; } cout<<"\tElemento "<<n<<" insertado correctamente"<<endl; } void IngresarFinal(Nodo *&lista,int n){ Nodo *NuevoNodo=new Nodo(); NuevoNodo->dato=n; Nodo *aux1=lista; Nodo *aux2; while((aux1 !=NULL)&&(aux1->dato<n)){ aux2=aux1; aux1=aux1->siguiente; } cout<<"\tElemento "<<n<<" insertado correctamente"<<endl; } void ImprimirLista(Nodo *lista){ Nodo *actual=new Nodo(); actual=lista; while(actual !=NULL){ cout<<actual->dato<<"->"; actual = actual->siguiente; } } void recorrer(Nodo *lista){ //verifica si la lista esta vacía if(lista == NULL){ //si esta vacía muestra este mensaje cout<<"La lista esta vacia."<<endl; } else{ //si no esta vacía declara un puntero p al primer elemento de la lista Nodo *p = lista; do{ //muestra la data del nodo refernombreo por p cout<<"Elemento: "<<p->dato<<endl; //asigna a p la dirección de nodo siguiente o NULL si no lo hay p = p->siguiente; //repite el proceso mientras p sea diferente de NULL }while(p != NULL); cout<<"Fin del recorrido."<<endl; } } int main(){ int opcion,dato; while(opcion<=3){ cout<<"1) Insertar elementos al inicio: "<<endl; cout<<"2) Insertar elementos al final: "<<endl; cout<<"3) Mostrar lista: "<<endl; cin>>opcion; switch(opcion) { case 1: cout<<"Ingr