Xyris  0.5
LinkedList::LinkedList< T > Class Template Reference

#include <LinkedList.hpp>

Public Member Functions

 LinkedList ()
 
 LinkedList (T val)
 
 ~LinkedList ()
 
void InsertFront (T val)
 
void InsertBack (T val)
 
void InsertBefore (LinkedListNode< T > *next, T val)
 
void InsertAfter (LinkedListNode< T > *prev, T val)
 
void Remove (LinkedListNode< T > *del)
 
LinkedListNode< T > * RemoveFront ()
 
LinkedListNode< T > * RemoveBack ()
 
LinkedListNode< T > * RemoveBefore (LinkedListNode< T > *node)
 
LinkedListNode< T > * RemoveAfter (LinkedListNode< T > *node)
 
LinkedListNode< T > * Head ()
 
LinkedListNode< T > * Tail ()
 
size_t Count ()
 
bool IsEmpty ()
 

Private Attributes

LinkedListNode< T > * head
 
LinkedListNode< T > * tail
 
size_t count
 

Detailed Description

template<typename T>
class LinkedList::LinkedList< T >

Definition at line 126 of file LinkedList.hpp.

Constructor & Destructor Documentation

◆ LinkedList() [1/2]

template<typename T >
LinkedList::LinkedList< T >::LinkedList ( )
inline

Definition at line 128 of file LinkedList.hpp.

129  : head(NULL)
130  , tail(NULL)
131  , count(0)
132  {
133  // Default constructor
134  }

◆ LinkedList() [2/2]

template<typename T >
LinkedList::LinkedList< T >::LinkedList ( val)
inline

Definition at line 136 of file LinkedList.hpp.

137  : LinkedList()
138  {
139  InsertFront(val);
140  }

◆ ~LinkedList()

template<typename T >
LinkedList::LinkedList< T >::~LinkedList ( )
inline

Definition at line 142 of file LinkedList.hpp.

143  {
144  LinkedListNode<T>* back;
145  while ((back = RemoveBack())) {
146  delete back;
147  }
148  }

Member Function Documentation

◆ Count()

template<typename T >
size_t LinkedList::LinkedList< T >::Count ( )
inline

Get the number of items in the linked list.

Returns
size_t Number of items in the linked list

Definition at line 278 of file LinkedList.hpp.

279  {
280  return count;
281  }

◆ Head()

template<typename T >
LinkedListNode<T>* LinkedList::LinkedList< T >::Head ( )
inline

Get pointer to the head node.

Returns
LinkedListNode* Pointer to head node

Definition at line 258 of file LinkedList.hpp.

259  {
260  return head;
261  }

◆ InsertAfter()

template<typename T >
void LinkedList::LinkedList< T >::InsertAfter ( LinkedListNode< T > *  prev,
val 
)
inline

Definition at line 188 of file LinkedList.hpp.

189  {
190  if (!prev)
191  return;
192  LinkedListNode<T>* newNode = new LinkedListNode<T>(val);
193  newNode->SetNext(prev->Next());
194  prev->SetNext(newNode);
195  newNode->SetPrevious(prev);
196  if (newNode->Next()) {
197  newNode->Next()->SetPrevious(newNode);
198  } else {
199  tail = newNode;
200  }
201  ++count;
202  }
+ Here is the call graph for this function:

◆ InsertBack()

template<typename T >
void LinkedList::LinkedList< T >::InsertBack ( val)
inline

Definition at line 161 of file LinkedList.hpp.

162  {
163  if (tail) {
164  InsertAfter(tail, val);
165  } else {
166  tail = new LinkedListNode<T>(val);
167  head = tail;
168  ++count;
169  }
170  }

◆ InsertBefore()

template<typename T >
void LinkedList::LinkedList< T >::InsertBefore ( LinkedListNode< T > *  next,
val 
)
inline

Definition at line 172 of file LinkedList.hpp.

173  {
174  if (!next)
175  return;
176  LinkedListNode<T>* newNode = new LinkedListNode<T>(val);
177  newNode->SetPrevious(next->Previous());
178  next->SetPrevious(newNode);
179  newNode->SetNext(next);
180  if (newNode->Previous()) {
181  newNode->Previous()->SetNext(newNode);
182  } else {
183  head = newNode;
184  }
185  ++count;
186  }
+ Here is the call graph for this function:

◆ InsertFront()

template<typename T >
void LinkedList::LinkedList< T >::InsertFront ( val)
inline

Definition at line 150 of file LinkedList.hpp.

151  {
152  if (head) {
153  InsertBefore(head, val);
154  } else {
155  head = new LinkedListNode<T>(val);
156  tail = head;
157  ++count;
158  }
159  }

◆ IsEmpty()

template<typename T >
bool LinkedList::LinkedList< T >::IsEmpty ( )
inline

Check if the linked list is empty.

Returns
true The list is empty
false The list is not empty

Definition at line 289 of file LinkedList.hpp.

290  {
291  return Count() == 0;
292  }

◆ Remove()

template<typename T >
void LinkedList::LinkedList< T >::Remove ( LinkedListNode< T > *  del)
inline

Definition at line 204 of file LinkedList.hpp.

205  {
206  if (del == head)
207  head = del->Next();
208  if (del == tail)
209  tail = del->Previous();
210  if (del->Next())
211  del->Next()->SetPrevious(del->Previous());
212  if (del->Previous())
213  del->Previous()->SetNext(del->Next());
214  count--;
215  }
+ Here is the call graph for this function:

◆ RemoveAfter()

template<typename T >
LinkedListNode<T>* LinkedList::LinkedList< T >::RemoveAfter ( LinkedListNode< T > *  node)
inline

Definition at line 244 of file LinkedList.hpp.

245  {
246  if (!node)
247  return NULL;
248  LinkedListNode<T>* after = node->Next();
249  Remove(after);
250  return after;
251  }
+ Here is the call graph for this function:

◆ RemoveBack()

template<typename T >
LinkedListNode<T>* LinkedList::LinkedList< T >::RemoveBack ( )
inline

Definition at line 226 of file LinkedList.hpp.

227  {
228  if (!tail)
229  return NULL;
230  LinkedListNode<T>* currTail = tail;
231  Remove(currTail);
232  return currTail;
233  }

◆ RemoveBefore()

template<typename T >
LinkedListNode<T>* LinkedList::LinkedList< T >::RemoveBefore ( LinkedListNode< T > *  node)
inline

Definition at line 235 of file LinkedList.hpp.

236  {
237  if (!node)
238  return NULL;
239  LinkedListNode<T>* before = node->Previous();
240  Remove(before);
241  return before;
242  }
+ Here is the call graph for this function:

◆ RemoveFront()

template<typename T >
LinkedListNode<T>* LinkedList::LinkedList< T >::RemoveFront ( )
inline

Definition at line 217 of file LinkedList.hpp.

218  {
219  if (!head)
220  return NULL;
221  LinkedListNode<T>* currHead = head;
222  Remove(currHead);
223  return currHead;
224  }

◆ Tail()

template<typename T >
LinkedListNode<T>* LinkedList::LinkedList< T >::Tail ( )
inline

Get pointer to the tail node.

Returns
LinkedListNode* Pointer to tail node

Definition at line 268 of file LinkedList.hpp.

269  {
270  return tail;
271  }

Field Documentation

◆ count

template<typename T >
size_t LinkedList::LinkedList< T >::count
private

Definition at line 297 of file LinkedList.hpp.

◆ head

template<typename T >
LinkedListNode<T>* LinkedList::LinkedList< T >::head
private

Definition at line 295 of file LinkedList.hpp.

◆ tail

template<typename T >
LinkedListNode<T>* LinkedList::LinkedList< T >::tail
private

Definition at line 296 of file LinkedList.hpp.


The documentation for this class was generated from the following file:
LinkedList::LinkedList::InsertFront
void InsertFront(T val)
Definition: LinkedList.hpp:150
LinkedList::LinkedList::InsertBefore
void InsertBefore(LinkedListNode< T > *next, T val)
Definition: LinkedList.hpp:172
LinkedList::LinkedList::head
LinkedListNode< T > * head
Definition: LinkedList.hpp:295
LinkedList::LinkedList::RemoveBack
LinkedListNode< T > * RemoveBack()
Definition: LinkedList.hpp:226
LinkedList::LinkedList::count
size_t count
Definition: LinkedList.hpp:297
LinkedList::LinkedList::Count
size_t Count()
Get the number of items in the linked list.
Definition: LinkedList.hpp:278
LinkedList::LinkedList::tail
LinkedListNode< T > * tail
Definition: LinkedList.hpp:296
LinkedList::LinkedList::LinkedList
LinkedList()
Definition: LinkedList.hpp:128
LinkedList::LinkedList::InsertAfter
void InsertAfter(LinkedListNode< T > *prev, T val)
Definition: LinkedList.hpp:188
LinkedList::LinkedList::Remove
void Remove(LinkedListNode< T > *del)
Definition: LinkedList.hpp:204