-
Notifications
You must be signed in to change notification settings - Fork 75
/
Copy pathStringArray.h
125 lines (118 loc) · 2.54 KB
/
StringArray.h
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
/*
* StringArray.h
*
* Created on: 18.12.2015 г.
* Author: ficeto
*/
#ifndef STRINGARRAY_H_
#define STRINGARRAY_H_
#include "stddef.h"
#include "WString.h"
class StringArrayItem;
class StringArrayItem {
private:
String _string;
public:
StringArrayItem *next;
StringArrayItem(String str):_string(str), next(NULL){}
~StringArrayItem(){}
String string(){ return _string; }
};
class StringArray {
private:
StringArrayItem *_items;
public:
StringArray():_items(NULL){}
StringArray(StringArrayItem *items):_items(items){}
~StringArray(){}
StringArrayItem *items(){
return _items;
}
void add(String str){
StringArrayItem *it = new StringArrayItem(str);
if(_items == NULL){
_items = it;
} else {
StringArrayItem *i = _items;
while(i->next != NULL) i = i->next;
i->next = it;
}
}
size_t length(){
size_t i = 0;
StringArrayItem *it = _items;
while(it != NULL){
i++;
it = it->next;
}
return i;
}
bool contains(String str){
StringArrayItem *it = _items;
while(it != NULL){
if(it->string() == str)
return true;
it = it->next;
}
return false;
}
String get(size_t index){
size_t i = 0;
StringArrayItem *it = _items;
while(it != NULL){
if(i++ == index)
return it->string();
it = it->next;
}
return String();
}
bool remove(size_t index){
StringArrayItem *it = _items;
if(!index){
if(_items == NULL)
return false;
_items = _items->next;
delete it;
return true;
}
size_t i = 0;
StringArrayItem *pit = _items;
while(it != NULL){
if(i++ == index){
pit->next = it->next;
delete it;
return true;
}
pit = it;
it = it->next;
}
return false;
}
bool remove(String str){
StringArrayItem *it = _items;
StringArrayItem *pit = _items;
while(it != NULL){
if(it->string() == str){
if(it == _items){
_items = _items->next;
} else {
pit->next = it->next;
}
delete it;
return true;
}
pit = it;
it = it->next;
}
return false;
}
void free(){
StringArrayItem *it;
while(_items != NULL){
it = _items;
_items = _items->next;
delete it;
}
}
};
#endif /* STRINGARRAY_H_ */