PLE:Unidad7Ejercicio10

/* programa:      Ejercicio10 Descipcion:    Lista enlazada. Inserta elementos mediante funciones.


 * 1) include
 * 2) include

struct nodo{ int num; nodo *ps; };

char menu; void insertaPpio(nodo **r); void insertaFin(nodo **r); void insertaOrd(nodo **r); void muestra(nodo *r);

void main {       nodo *raiz=NULL; char opc = 'p';

while(opc != 's') {               opc = menu; switch(opc) {                       case 'p':       insertaPpio(&raiz); break; case 'f':      insertaFin(&raiz); break; case 'o':      insertaOrd(&raiz); break; case 'm':      muestra(raiz); }       } }

char menu {       char o;        cout << "MENU DE OPCIONES" << endl << endl; cout << "p - Inserta por el principio de la lista" << endl; cout << "f - Inserta por el final de la lista" << endl; cout << "o - Inserta ordenadamente en la lista" << endl; cout << "m - Muestra la lista en pantalla" << endl; cout << "s - Salir" << endl << endl; cout << "Elija una opcion "; cin >> o;       return o; }

void insertaPpio(nodo **r) {       nodo *nuevo; // Creamos el nodo nuevo = new nodo; // Introduzco numero cout << "Introduzca un numero "; cin >> nuevo->num; // Enlazamos nuevo->ps = *r; *r = nuevo; }

void insertaFin(nodo **r) {       nodo *nuevo, *ult; // Creamos el nodo nuevo = new nodo; // Introduzco numero cout << "Introduzca un numero "; cin >> nuevo->num; // Localizamos el ultimo nodo de la lista if(*r == NULL) {               nuevo->ps = NULL; *r = nuevo; }       else {               ult = *r; while(ult->ps != NULL) ult = ult->ps; nuevo->ps = NULL; ult->ps = nuevo; } }

void insertaOrd(nodo **r) {       nodo *nuevo, *ant; // Creamos el nodo nuevo = new nodo; // Introduzco numero cout << "Introduzca un numero "; cin >> nuevo->num; // Localizamos el ultimo nodo de la lista if(*r == NULL || (*r)->num >= nuevo->num) {               nuevo->ps = *r; *r = nuevo; }       else {               ant = *r; while(ant->ps != NULL && ant->ps->num < nuevo->num) ant = ant->ps; nuevo->ps = ant->ps; ant->ps = nuevo; } }

void muestra(nodo *r) {       while(r != NULL) {               cout << r->num << '\t'; r = r->ps; }       cout << endl; }