#include <iostream>
#include <cstdlib>
using namespace std;
struct numero{
int dato; //valor del numero
numero *sig; //nodo al q apunta
};
typedef struct numero Numero;
void ingresarNumero(Numero **); //puntero q recorrerá para insetar valor
void mostrarNumeros(Numero *); //mostrar valores
void eliminarNumero(Numero *); //eliminar valor segun posición
int main()
{
int opcion = 4;
Numero *lista = NULL; //primer elemento de la lista vacia
do{
system("CLS");
cout << "1.- Ingresar Dato." << endl; cout << "2.- Mostrar Datos." << endl;
cout << "3.- Eliminar Dato." << endl; cout << "4.- Salir." << endl; cout << "--> ";
cin >> opcion; cout << endl;
switch(opcion){
case 1: ingresarNumero(&lista); break;
case 2: mostrarNumeros(lista); break;
case 3: eliminarNumero(lista); break;
}
}while(opcion!=4);
cout << "Nos vemos!" << endl;
return 0;
}
void ingresarNumero(Numero **primerNumero){
Numero *nuevoNumero = new Numero; //reservamos memoria
int nuevoDato; //el dato
if (nuevoNumero == NULL){cout << "No se pudo reservar Memoria. " << endl;}
else{
cout << "Si se pudo reservar memoria. Direccion: " << nuevoNumero << endl << endl;
cout << "Ingrese nuevo numero: "; cin >> nuevoDato;
nuevoNumero->dato = nuevoDato; //Le asignamos el nuevo dato.
nuevoNumero->sig = NULL; //el siguiente es nulo
//Si la lista esta vacia:
if (*primerNumero == NULL) {*primerNumero = nuevoNumero;}
else{
//si no esta vacia
Numero *ptr = *primerNumero;
while(ptr->sig != NULL) ptr = ptr->sig; // avanza al siguiente nodo
// el nodo encontrado es no vacio pero el siguiente es nulo.
ptr->sig = nuevoNumero; //el nodo sgte nulo toma la direccion de nuevo numero
}
}
cout << endl;
system("pause");
}
void mostrarNumeros(Numero *ptr){
if (ptr == NULL) cout << "La Lista esta Vacia." << endl << endl;
else {
while(ptr!=NULL){
//mientras el nodo sgte no sea nulo muestra el dato del nodo actual.
cout << ptr->dato << " ";
ptr = ptr->sig; // avanza al sgte nodo
}
cout << endl << endl;
}
system("pause");
}
void eliminarNumero(Numero *ptr){
}