FANDOM


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();
}

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.