Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template <typename tip> class NizLista : public Lista<tip>
- {
- tip** niz;
- int tr;
- int br;
- int kapacitet;
- void prosiri();
- public:
- NizLista();
- ~NizLista();
- NizLista(const NizLista &l);
- NizLista &operator=(const NizLista &l);
- int brojElemenata() const override
- {
- return br;
- }
- const tip trenutni() const override
- {
- return *niz[tr];
- }
- tip &trenutni()
- {
- return *niz[tr];
- }
- bool sljedeci() override;
- bool prethodni() override;
- void pocetak() override;
- void kraj() override;
- void obrisi() override;
- void dodajIspred(const tip &el) override;
- void dodajIza(const tip &el) override;
- tip &operator[](int i) override;
- const tip &operator[](int i) const override;
- };
- template <typename tip> void NizLista<tip>::prosiri()
- {
- kapacitet+=kapacitet;
- tip** pom=new tip*[kapacitet];
- for (int i=0; i<br; i++) pom[i]=niz[i];
- delete[] niz;
- niz=pom;
- }
- template <typename tip> NizLista<tip>::NizLista()
- {
- kapacitet=1000;
- niz=new tip*[kapacitet]{};
- tr=0;
- br=0;
- }
- template <typename tip> NizLista<tip>::~NizLista()
- {
- for (int i=0; i<br; i++) delete niz[i];
- delete[] niz;
- br=0;
- tr=0;
- }
- template <typename tip> NizLista<tip>::NizLista(const NizLista &l)
- {
- niz=new tip*[l.kapacitet] {};
- br=l.br;
- kapacitet=l.kapacitet;
- for (int i=0; i<br; i++) niz[i]=new tip(*l.niz[i]);
- tr=l.tr;
- }
- template <typename tip> NizLista<tip> &NizLista<tip>::operator =(const NizLista &l)
- {
- if(this==&l) return *this;
- delete[] niz;
- niz=new tip*[l.kapacitet] {};
- br=l.br;
- tr=l.tr;
- kapacitet=l.kapacitet;
- for (int i=0; i<br; i++) niz[i]=new tip(*l.niz[i]);
- return *this;
- }
- template <typename tip> bool NizLista<tip>::sljedeci()
- {
- if (br==0) throw "Niz je prazan";
- if(tr==br-1) return false;
- tr++;
- return true;
- }
- template <typename tip> bool NizLista<tip>::prethodni()
- {
- if (br==0) throw ("Niz je prazan");
- if (tr==0) return false;
- tr--;
- return false;
- }
- template <typename tip> void NizLista<tip>::kraj()
- {
- if (br==0) throw ("Niz je prazan");
- tr=br-1;
- }
- template <typename tip> void NizLista<tip>::pocetak()
- {
- if (br==0) throw ("Niz je prazan");
- tr=0;
- }
- template <typename tip> void NizLista<tip>::obrisi()
- {
- if (br==0) throw ("Niz je prazan");
- delete niz[tr];
- niz[tr]=nullptr;
- if (tr!=br-1) {
- for (int i=tr; i<br-1; i++) {
- niz[i]=niz[i+1];
- }
- }
- br--;
- if (tr==br && br>0) tr--;
- }
- template <typename tip> void NizLista<tip>::dodajIspred(const tip& el)
- {
- if (br==kapacitet) prosiri();
- if (br==0) {
- niz[0]=new tip(el);
- br++;
- tr=0;
- return;
- }
- for (int i=br; i>tr; i--) {
- niz[i]=niz[i-1];
- }
- niz[tr]=new tip(el);
- br++;
- tr++;
- }
- template <typename tip> void NizLista<tip>::dodajIza(const tip& el)
- {
- if (br==kapacitet) prosiri();
- if (br==0) {
- niz[0]=new tip(el);
- br++;
- return;
- }
- for (int i=br; i>tr+1; i--) niz[i]=niz[i-1];
- niz[tr+1]=new tip(el);
- br++;
- }
- template <typename tip> tip &NizLista<tip>::operator [](int i)
- {
- if (i<0 || i>=br) throw "Neispravan indeks";
- return *niz[i];
- }
- template <typename tip> const tip &NizLista<tip>:: operator[] (int i) const
- {
- if (i<0 || i>=br) throw "Neispravan indeks";
- return *niz[i];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement