#include <iostream>
using namespace std;
struct TipoNodo {
//datos
int numero;
//Puntero a siguiente nodo
TipoNodo * siguiente;
};
void insertarAlPrincipio (struct TipoNodo *&p)
{
struct TipoNodo * nuevoNodo;
nuevoNodo = new struct TipoNodo;
cout << "Introduce un numero: ";
cin >> nuevoNodo->numero;
nuevoNodo->siguiente = p;
p = nuevoNodo;
}
void insertarAlFinal (struct TipoNodo *&p)
{
struct TipoNodo * nuevoNodo;
struct TipoNodo * aux;
nuevoNodo = new struct TipoNodo;
cout << "Introduce un numero: ";
cin >> nuevoNodo->numero;
nuevoNodo -> siguiente = NULL;
if (p == NULL)
{
p = nuevoNodo;
}
else
{
aux = p;
while (aux -> siguiente != NULL)
{
aux = aux -> siguiente;
}
//al acabar el while aux apunta al ultimo nodo
aux -> siguiente = nuevoNodo;
}
}
void mostrar (struct TipoNodo *&p)
{
struct TipoNodo * actual;
actual = p;
if (actual == NULL) cout << "Lista vacia";
else
{
cout << "Datos contenidos en la lista:\n";
while (actual != NULL)
{
cout << actual -> numero << endl;
actual = actual -> siguiente;
}
}
}
int main()
{
struct TipoNodo * principio = NULL;
insertarAlPrincipio(principio);
insertarAlPrincipio(principio);
insertarAlPrincipio(principio);
insertarAlFinal(principio);
insertarAlFinal(principio);
insertarAlFinal(principio);
mostrar (principio);
return 0;
}