-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy path2-list.cpp
More file actions
48 lines (43 loc) · 839 Bytes
/
2-list.cpp
File metadata and controls
48 lines (43 loc) · 839 Bytes
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
#include "iostream"
template <class T>
struct ListItem {
ListItem<T>* next;
ListItem<T>* prev;
T data;
};
template <class T>
class List {
private:
ListItem<T>* head;
ListItem<T>* tail;
public:
List<T>() {
head = NULL;
tail = NULL;
};
void push(T value) {
ListItem<T>* item = new ListItem<T>;
item->data = value;
if (head == NULL) {
head = item;
} else {
item->prev = tail;
tail->next = item;
}
tail = item;
}
void display() {
ListItem<T>* current = head;
while (current != NULL) {
std::cout << current->data << '\n';
current = current->next;
}
}
};
int main() {
List<std::string> list;
list.push("Ave");
list.push("Emperor");
list.push("Marcus Aurelius!");
list.display();
};