]>
jfr.im git - irc/gameservirc.git/blob - gameserv/list.h
13 ~List(); //deconstructor
14 void insertAtFront( const T
& );
15 void insertAtBack( T
*&);
16 bool removeFromFront( T
& );
17 bool removeFromBack( T
& );
21 ListNode
< T
> *First() { return firstPtr
; };
22 ListNode
< T
> *Last() { return lastPtr
; };
24 ListNode
< T
> *firstPtr
;
25 ListNode
< T
> *lastPtr
;
27 ListNode
< T
> *getNewNode ( const T
& );
31 List
<T
>::List() : firstPtr (0), lastPtr (0) {}
38 cout
<< "Destroying Nodes" << endl
;
40 ListNode
<T
> *currentPtr
= firstPtr
, *tempPtr
;
42 while (currentPtr
!= 0)
45 currentPtr
= currentPtr
->next
;
46 // if (!tempPtr->getData()->stats || tempPtr->getData()->stats->started == 0)
49 // tempPtr->getData()->stats->started = 0;
51 cout
<< "All Nodes destroyed" << endl
;
56 void List
<T
>::insertAtFront( const T
&value
)
58 ListNode
<T
> *newPtr
= getNewNode ( value
);
62 firstPtr
= lastPtr
= newPtr
;
65 newPtr
->Next
= firstPtr
;
66 firstPtr
->prev
= newPtr
;
72 void List
<T
>::insertAtBack(T
*&value
)
74 ListNode
<T
> *newPtr
= getNewNode(*value
);
78 firstPtr
= lastPtr
= newPtr
;
82 newPtr
->prev
= lastPtr
;
83 lastPtr
->next
= newPtr
;
90 bool List
<T
>::removeFromFront( T
&value
)
96 ListNode
<T
> *tempPtr
= firstPtr
;
98 if ( firstPtr
== lastPtr
)
99 firstPtr
= lastPtr
= 0;
101 firstPtr
= firstPtr
->next
;
103 value
= tempPtr
->getData();
110 bool List
<T
>::removeFromBack( T
&value
)
116 ListNode
<T
> *tempPtr
= lastPtr
;
118 if ( firstPtr
== lastPtr
)
119 lastPtr
= firstPtr
= 0;
121 lastPtr
= lastPtr
->prev
;
123 value
= tempPtr
->getData();
131 bool List
<T
>::isEmpty() const
132 { return firstPtr
== 0; }
135 ListNode
<T
> *List
<T
>::getNewNode( const T
&value
)
137 ListNode
<T
> *ptr
= new ListNode
<T
>(value
);
145 void List
<T
>::print() const
149 cout
<< "Empty list" << endl
;
153 ListNode
<T
> *currentPtr
;
154 currentPtr
= firstPtr
;
157 cout
<< "aClient: " << *currentPtr
->getData();
159 if (currentPtr
->getData()->stats
)
160 cout
<< " Player Name:" << currentPtr
->getData()->stats
->name
;
162 currentPtr
= currentPtr
->next
;
169 bool List
<T
>::remove(T
*remPtr
)
171 ListNode
<T
> *newPtr
= firstPtr
;
176 testPtr
= newPtr
->getData();
177 if (testPtr
== remPtr
)
179 if (firstPtr
== lastPtr
)
181 firstPtr
= lastPtr
= 0;
185 else if (newPtr
!= lastPtr
&& newPtr
!= firstPtr
)
187 newPtr
->prev
->next
= newPtr
->next
;
188 newPtr
->next
->prev
= newPtr
->prev
;
192 else if (newPtr
== lastPtr
)
194 lastPtr
= newPtr
->prev
;
199 else if (newPtr
== firstPtr
)
201 firstPtr
= newPtr
->next
;
207 newPtr
= newPtr
->next
;