Fandom

Scratchpad

PLE:Unidad8Ejercicio02

215,870pages 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.

Fichero lista.h

#include <iostream.h>
#include <conio.h>
#include <stdio.h>

class nodo
{
    public:
        int n;
        nodo *ps;
};

class lista
{
        private:
                nodo *raiz;
        public:
                lista();
                ~lista();
                void inserta_nodo_inicio(int num);
                void inserta_nodo_final(int num);
                void borra_nodo_inicio();
                void borra_nodo_final();
                void visualizarLista();
                void abrirLista(char *);
                void guardarLista(char *);
};

Fichero lista.cpp

#include <fstream>
#include "lista.h"

lista::lista()
{
        raiz = NULL;
}

lista::~lista()
{
        while(raiz != NULL)
                borra_nodo_inicio();
}

void lista::inserta_nodo_inicio(int num)
{
        nodo *nuevo;
        // insertamos el nodo al principio
        nuevo = new nodo;
        nuevo->n = num;
        nuevo->ps = raiz;
        raiz = nuevo;
}

void lista::inserta_nodo_final(int num)
{
        nodo *nuevo,*ultimo;
        nuevo = new nodo;
        nuevo->n = num;
        if(raiz == NULL)
        {
                nuevo->ps = NULL;
                raiz = nuevo;
        }
        else
        {
                ultimo = raiz;
                while(ultimo->ps != NULL)
                {
                        ultimo = ultimo->ps;
                }
                nuevo->ps = ultimo->ps;
                ultimo->ps = nuevo;
        }
}

void lista::borra_nodo_inicio()
{
        nodo *pos = raiz;
        if(raiz != NULL)
        {
                raiz = pos->ps;
                delete pos;
        }
}

void lista::borra_nodo_final()
{
        nodo *pos = raiz, *ant = raiz;
        if(raiz != NULL)
        {
                while(pos->ps!=NULL)
                {
                        ant = pos;
                        pos = pos->ps;
                }
                if(pos == raiz)
                        raiz = raiz->ps;
                else
                        ant->ps = NULL;
                delete pos;
        }
}

void lista::visualizarLista()
{
        nodo *li = raiz;
        while(li!=NULL)
        {
                cout << li->n << '\t';
                li = li->ps;
        }
        cout << endl;
}

void lista::abrirLista(char *nom)
{
        ifstream f;
	int num;
        f.open(nom);
	if (f.good())
	{
		if(raiz == NULL)
		{
			f >> num;
			do
			{
				inserta_nodo_final(num);
			        f >> num;
			}while(!f.eof());
			f.close();
		}
	}
}

void lista::guardarLista(char *nom)
{
        ofstream f;
        nodo *pl = raiz;
	f.open(nom);
	if(f.good())
	{
		while(pl != NULL )
		{
		        f << pl->n << '\t';
                        pl = pl->ps;
		}
		f.close();
	}
}

Fichero ej02.cpp

#include <iostream.h>
#include <conio.h>
#include "lista.h"

void main()
{
        lista l1,l2;
        l1.inserta_nodo_inicio(8);
        l1.inserta_nodo_inicio(6);
        l1.inserta_nodo_inicio(4);
        l1.inserta_nodo_inicio(1);
        l1.visualizarLista();
        getch();
        l1.borra_nodo_inicio();
        l1.visualizarLista();
        l1.borra_nodo_final();
        l1.visualizarLista();
        getch();
        l1.guardarLista("lista.txt");
        l2.abrirLista("lista.txt");
        l2.visualizarLista();
        getch();
}

Also on Fandom

Random wikia