-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlista.cpp
More file actions
73 lines (62 loc) · 1.85 KB
/
Copy pathlista.cpp
File metadata and controls
73 lines (62 loc) · 1.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#ifndef LISTA_CPP
#define LISTA_CPP
#include "lista.h"
template <typename Tip>
void Lista<Tip>::init() {
glava = new Cvor(Tip());
rep = new Cvor(Tip(),glava);
glava->sljedeci = rep;
broj_elemenata = 0;
}
template <typename Tip>
typename Lista<Tip>::Iterator Lista<Tip>::Insert(Iterator it, Tip vrijednost) {
it.pok->prethodni->sljedeci = new Cvor(vrijednost, it.pok->prethodni, it.pok);
it.pok->prethodni = it.pok->prethodni->sljedeci;
broj_elemenata++;
return Iterator(it.pok->prethodni);
}
template <typename Tip>
typename Lista<Tip>::Iterator Lista<Tip>::Erase(Iterator it) {
it.pok->prethodni->sljedeci = it.pok->sljedeci;
it.pok->sljedeci->prethodni = it.pok->prethodni;
Iterator za_vracanje(it.pok->sljedeci);
delete it.pok;
broj_elemenata--;
return za_vracanje;
}
template <typename Tip>
Lista<Tip>::Lista(const Lista<Tip> &kopija) {
init();
for(auto it = kopija.Begin();it!=kopija.End();it++)
Push_Back(*it);
}
template <typename Tip>
Lista<Tip>::Lista(Lista<Tip> &&kopija):glava(kopija.glava),rep(kopija.rep),
broj_elemenata(kopija.broj_elemenata){
kopija.broj_elemenata = 0;
kopija.glava = nullptr;
kopija.rep = nullptr;
}
template <typename Tip>
Lista<Tip>& Lista<Tip>::operator=(const Lista<Tip> &rhs) {
if(this == &rhs)
return *this;
Clear();
for(auto it = rhs.Begin();it!=rhs.End();it++)
Push_Back(*it);
return *this;
}
template <typename Tip>
Lista<Tip>& Lista<Tip>::operator=(Lista<Tip> &&rhs) {
swap(glava,rhs.glava);
swap(rep,rhs.rep);
broj_elemenata = rhs.broj_elemenata;
return *this;
}
template <typename tip>
Lista<tip>& operator+(Lista<tip> &l1, const Lista<tip> &l2) {
for(auto it(l2.Begin()); it != l2.End(); it++)
l1.Push_Back(*it);
return l1;
}
#endif // LISTA_CPP