-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathList.h
More file actions
111 lines (87 loc) · 1.81 KB
/
List.h
File metadata and controls
111 lines (87 loc) · 1.81 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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
//
// Created by viviane on 18/11/2021.
//
#ifndef JOGO_LIST_H
#define JOGO_LIST_H
#include "Element.h"
#include <iostream>
using namespace std;
template <class TL> class List {
private:
Element<TL>* pFirst;
Element<TL>* pLast;
int len;
public:
List();
~List();
int getLen(){ return len; }
TL* getItem(int pos);
void push(TL* item);
void pop(TL* item);
TL* operator[](int i);
};
template <class TL>
List<TL>::List(){
len = 0;
pFirst = nullptr;
pLast = nullptr;
}
template <class TL>
List<TL>::~List(){
pFirst = nullptr;
pLast = nullptr;
len = 0;
}
template <class TL>
TL* List<TL>::getItem(int pos){
Element<TL>* temp = pFirst;
if (pos == 0){
return temp->getItem();
}
for (int i = 0; i < pos; i++){
temp = temp->getPNext();
}
return temp->getItem();
}
template <class TL>
void List<TL>::push(TL* item){
if (pFirst == nullptr){
pFirst = new Element<TL>;
pFirst->setItem(item);
pLast = pFirst;
}
else {
Element<TL>* temp = new Element<TL>;
temp->setItem(item);
pLast->setNext(temp);
pLast = temp;
}
len++;
}
template <class TL>
void List<TL>::pop(TL* item){
Element<TL>* temp = pFirst;
Element<TL>* previous = nullptr;
while (temp != nullptr && temp->getItem() != item){
previous = temp;
temp = temp->getPNext();
}
if (temp == pFirst){
pFirst = temp->getPNext();
}
else if (temp == pLast){
previous->setNext(nullptr);
pLast = previous;
}
else if (temp != nullptr){
previous->setNext(temp->getPNext());
}
if (temp != nullptr){
len--;
}
}
template <class TL>
TL* List<TL>::operator[](int i){
return this->getItem(i);
}
#endif //JOGO_LIST_H