9 |
|
|
10 |
|
#include "Node.hpp" |
11 |
|
|
12 |
< |
template <typename Type> |
12 |
> |
template<typename Type> |
13 |
|
class NullNode : public Node<Type> |
14 |
|
{ |
15 |
|
private: |
16 |
|
bool null; |
17 |
– |
NullNode<Type>* next; |
18 |
– |
NullNode<Type>* previous; |
17 |
|
public: |
18 |
< |
NullNode() : null(false) {} |
18 |
> |
NullNode() : null(true) {} |
19 |
|
NullNode(const Type& value) : Node<Type>::Node(value), null(false) {} |
20 |
|
~NullNode() {} |
21 |
+ |
bool contains(const Type& value, NullNode<Type>* end); |
22 |
|
}; |
23 |
|
|
24 |
+ |
template<typename Type> |
25 |
+ |
bool NullNode<Type>::contains(const Type& value, NullNode<Type>* end) |
26 |
+ |
{ |
27 |
+ |
NullNode<Type>* another = Node<Type>::getNext() != NULL ? |
28 |
+ |
Node<Type>::getNext() : Node<Type>::getPrevious(); |
29 |
+ |
|
30 |
+ |
if (null && end == this) |
31 |
+ |
{ |
32 |
+ |
return false; |
33 |
+ |
} |
34 |
+ |
else if (!null && value == Node<Type>::getValue()) |
35 |
+ |
{ |
36 |
+ |
return true; |
37 |
+ |
} |
38 |
+ |
else return another->contains(value, end); |
39 |
+ |
} |
40 |
+ |
|
41 |
|
#endif // _NullNode_hpp_ |