Fandom

Scratchpad

PLE:Unidad7Ejercicio10

215,688pages on
this wiki
Add New Page
Discuss this page0 Share

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

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

#include<iostream.h>
#include<string.h>

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

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

int 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;
}

Also on Fandom

Random wikia