14 |
|
class DoublyLinkedList |
15 |
|
{ |
16 |
|
private: |
17 |
< |
NullNode<Type>* front; |
18 |
< |
NullNode<Type>* back; |
17 |
> |
NullNode<Type> front; |
18 |
> |
NullNode<Type> back; |
19 |
|
public: |
20 |
< |
DoublyLinkedList() {} |
21 |
< |
~DoublyLinkedList() {} |
22 |
< |
void addFront(Type& type); |
23 |
< |
void addBack(Type& type); |
20 |
> |
DoublyLinkedList() { front.setNext(&back); back.setPrevious(&front); } |
21 |
> |
~DoublyLinkedList(); |
22 |
> |
void addFront(const Type& value) { front.addNext(value); } |
23 |
> |
void addBack(const Type& value) { back.addPrevious(value); } |
24 |
> |
bool contains(const Type& value) { return front.contains(value, &back); } |
25 |
> |
void removeFirst(const Type& value) { front.remove(value, &back); } |
26 |
> |
void removeLast(const Type& value) { back.remove(value, &front, false); } |
27 |
> |
Iterator<Type> iterator(void) { return Iterator<Type>(&front, &back); } |
28 |
|
}; |
29 |
|
|
30 |
+ |
template<typename Type> |
31 |
+ |
DoublyLinkedList<Type>::~DoublyLinkedList() |
32 |
+ |
{ |
33 |
+ |
while (front.getNext() != &back) front.removeNext(); |
34 |
+ |
} |
35 |
+ |
|
36 |
|
#endif // _DoublyLinkedList_hpp_ |