lista.h

 avatar
unknown
c_cpp
a year ago
1.4 kB
5
Indexable
#ifndef LISTA_H_INCLUDED
#define LISTA_H_INCLUDED

//Generikus
template <typename Adattipus>
class Lista
{
    struct ListaElem
    {
        Adattipus adat;
        ListaElem* kov;
        ListaElem(Adattipus a) :adat(a), kov(NULL) {}
    };

    ListaElem* eleje;
    size_t meret;

public:
    Lista() :eleje(NULL), meret(0) {};

    size_t getSize() {return meret;}
    bool isNull() {return eleje == NULL ? true : false;}

    void Add(Adattipus e)
    {
        ListaElem *uj = new ListaElem(e);

        if (eleje == NULL)
        {
            eleje = uj;
            meret++;
            //std::cout<<"Elem: " << eleje->adat <<std::endl;
        }
        else
        {
            ListaElem* mozgo = eleje;
            while(mozgo != NULL)
                mozgo = mozgo->kov;
            mozgo = uj;
            meret++;
            //std::cout<<"Elem" << eleje->adat <<std::endl;
        }
    }

    Adattipus& operator[](size_t idx)
    {
        if (idx >= meret)
            throw "Rossz index Lista[]!";
        ListaElem* mozgo = eleje;
        while(mozgo->kov != NULL)
            mozgo = mozgo->kov;
        return mozgo->adat;
    }

    void clear()
    {
        ListaElem* mozgo = eleje;
        ListaElem* torlos = eleje;
        while(mozgo != NULL)
        {
            mozgo = mozgo->kov;
            delete torlos;
            torlos = mozgo;
        }
    }
};
#endif // LISTA_H_INCLUDED
Editor is loading...
Leave a Comment