SHARE
TWEET

Untitled

a guest Nov 9th, 2019 91 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. template <typename tip> class NizLista : public Lista<tip>
  2. {
  3.     tip** niz;
  4.     int tr;
  5.     int br;
  6.     int kapacitet;
  7.     void prosiri();
  8. public:
  9.     NizLista();
  10.     ~NizLista();
  11.     NizLista(const NizLista &l);
  12.     NizLista &operator=(const NizLista &l);
  13.     int brojElemenata() const override
  14.     {
  15.         return br;
  16.     }
  17.     const tip trenutni() const override
  18.     {
  19.         return *niz[tr];
  20.     }
  21.     tip &trenutni()
  22.     {
  23.         return *niz[tr];
  24.     }
  25.     bool sljedeci() override;
  26.     bool prethodni() override;
  27.     void pocetak() override;
  28.     void kraj() override;
  29.     void obrisi() override;
  30.     void dodajIspred(const tip &el) override;
  31.     void dodajIza(const tip &el) override;
  32.     tip &operator[](int i) override;
  33.     const tip &operator[](int i) const override;
  34. };
  35.  
  36. template <typename tip> void NizLista<tip>::prosiri()
  37. {
  38.     kapacitet+=kapacitet;
  39.     tip** pom=new tip*[kapacitet];
  40.     for (int i=0; i<br; i++) pom[i]=niz[i];
  41.     delete[] niz;
  42.     niz=pom;
  43. }
  44.  
  45. template <typename tip> NizLista<tip>::NizLista()
  46. {
  47.     kapacitet=1000;
  48.     niz=new tip*[kapacitet]{};
  49.     tr=0;
  50.     br=0;
  51. }
  52.  
  53. template <typename tip> NizLista<tip>::~NizLista()
  54. {
  55.     for (int i=0; i<br; i++) delete niz[i];
  56.     delete[] niz;
  57.     br=0;
  58.     tr=0;
  59. }
  60.  
  61. template <typename tip> NizLista<tip>::NizLista(const NizLista &l)
  62. {
  63.     niz=new tip*[l.kapacitet] {};
  64.     br=l.br;
  65.     kapacitet=l.kapacitet;
  66.     for (int i=0; i<br; i++) niz[i]=new tip(*l.niz[i]);
  67.     tr=l.tr;
  68. }
  69.  
  70. template <typename tip> NizLista<tip> &NizLista<tip>::operator =(const NizLista &l)
  71. {
  72.     if(this==&l) return *this;
  73.     delete[] niz;
  74.     niz=new tip*[l.kapacitet] {};
  75.     br=l.br;
  76.     tr=l.tr;
  77.     kapacitet=l.kapacitet;
  78.     for (int i=0; i<br; i++) niz[i]=new tip(*l.niz[i]);
  79.     return *this;
  80. }
  81.  
  82. template <typename tip> bool NizLista<tip>::sljedeci()
  83. {
  84.     if (br==0) throw "Niz je prazan";
  85.     if(tr==br-1) return false;
  86.     tr++;
  87.     return true;
  88. }
  89.  
  90. template <typename tip> bool NizLista<tip>::prethodni()
  91. {
  92.     if (br==0) throw ("Niz je prazan");
  93.     if (tr==0) return false;
  94.     tr--;
  95.     return false;
  96. }
  97.  
  98. template <typename tip> void NizLista<tip>::kraj()
  99. {
  100.     if (br==0) throw ("Niz je prazan");
  101.     tr=br-1;
  102. }
  103.  
  104. template <typename tip> void NizLista<tip>::pocetak()
  105. {
  106.     if (br==0) throw ("Niz je prazan");
  107.     tr=0;
  108. }
  109.  
  110. template <typename tip> void NizLista<tip>::obrisi()
  111. {
  112.     if (br==0) throw ("Niz je prazan");
  113.     delete niz[tr];
  114.     niz[tr]=nullptr;
  115.     if (tr!=br-1) {
  116.     for (int i=tr; i<br-1; i++) {
  117.         niz[i]=niz[i+1];
  118.     }
  119.     }
  120.     br--;
  121.     if (tr==br && br>0) tr--;
  122. }
  123.  
  124. template <typename tip> void NizLista<tip>::dodajIspred(const tip& el)
  125. {
  126.     if (br==kapacitet) prosiri();
  127.     if (br==0) {
  128.         niz[0]=new tip(el);
  129.         br++;
  130.         tr=0;
  131.         return;
  132.     }
  133.     for (int i=br; i>tr; i--) {
  134.         niz[i]=niz[i-1];
  135.     }
  136.     niz[tr]=new tip(el);
  137.     br++;
  138.     tr++;
  139. }
  140.  
  141. template <typename tip> void NizLista<tip>::dodajIza(const tip& el)
  142. {
  143.     if (br==kapacitet) prosiri();
  144.     if (br==0) {
  145.         niz[0]=new tip(el);
  146.         br++;
  147.         return;
  148.     }
  149.     for (int i=br; i>tr+1; i--) niz[i]=niz[i-1];
  150.     niz[tr+1]=new tip(el);
  151.     br++;
  152. }
  153.  
  154. template <typename tip> tip &NizLista<tip>::operator [](int i)
  155. {
  156.     if (i<0 || i>=br) throw "Neispravan indeks";
  157.     return *niz[i];
  158. }
  159.  
  160. template <typename tip> const tip &NizLista<tip>:: operator[] (int i) const
  161. {
  162.     if (i<0 || i>=br) throw "Neispravan indeks";
  163.     return *niz[i];
  164. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top