Advertisement
Guest User

Untitled

a guest
Nov 9th, 2019
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.51 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement