Rudiments
Public Member Functions | List of all members
linkedlist< valuetype > Class Template Reference

Public Member Functions

 linkedlist ()
 
 ~linkedlist ()
 
void prepend (valuetype value)
 
void prepend (linkedlistnode< valuetype > *node)
 
void append (valuetype value)
 
void append (linkedlistnode< valuetype > *node)
 
void insertBefore (linkedlistnode< valuetype > *node, valuetype value)
 
void insertBefore (linkedlistnode< valuetype > *node, linkedlistnode< valuetype > *newnode)
 
void insertAfter (linkedlistnode< valuetype > *node, valuetype value)
 
void insertAfter (linkedlistnode< valuetype > *node, linkedlistnode< valuetype > *newnode)
 
void moveBefore (linkedlistnode< valuetype > *node, linkedlistnode< valuetype > *nodetomove)
 
void moveAfter (linkedlistnode< valuetype > *node, linkedlistnode< valuetype > *nodetomove)
 
void detach (linkedlistnode< valuetype > *node)
 
bool remove (valuetype value)
 
bool removeAndDelete (valuetype value)
 
bool removeAndArrayDelete (valuetype value)
 
bool removeAll (valuetype value)
 
bool removeAllAndDelete (valuetype value)
 
bool removeAllAndArrayDelete (valuetype value)
 
bool remove (linkedlistnode< valuetype > *node)
 
bool removeAndDelete (linkedlistnode< valuetype > *node)
 
bool removeAndArrayDelete (linkedlistnode< valuetype > *node)
 
uint64_t getLength () const
 
linkedlistnode< valuetype > * getFirst ()
 
linkedlistnode< valuetype > * getLast ()
 
linkedlistnode< valuetype > * getPrevious (linkedlistnode< valuetype > *node)
 
linkedlistnode< valuetype > * getNext (linkedlistnode< valuetype > *node)
 
linkedlistnode< valuetype > * find (valuetype value)
 
linkedlistnode< valuetype > * find (linkedlistnode< valuetype > *startnode, valuetype value)
 
void insertionSort ()
 
void heapSort ()
 
void clear ()
 
void clearAndDelete ()
 
void clearAndArrayDelete ()
 
void print () const
 
void print (uint64_t count) const
 

Detailed Description

template<class valuetype>
class linkedlist< valuetype >

The linkedlist class allows you to store an arbitrary number of values in a doubly-linked list. Since the linkedlist class is template-based, you can store arbitrary types of values.

Each linkedlist is composed of a series of linkedlistnodes. Each linkedlistnode contains a value.

Constructor & Destructor Documentation

◆ linkedlist()

template<class valuetype >
linkedlist< valuetype >::linkedlist ( )

Creates an empty instance of the linkedlist class.

◆ ~linkedlist()

template<class valuetype >
linkedlist< valuetype >::~linkedlist ( )

Deletes this instance of the linkedlist class and all of its linkedlistnodes. Note however, that the value stored in each linkedlistnode is not deleted by this call.

Member Function Documentation

◆ append() [1/2]

template<class valuetype >
void linkedlist< valuetype >::append ( linkedlistnode< valuetype > *  node)

Appends already created linkedlistnode "node" to the linkedlist.

◆ append() [2/2]

template<class valuetype >
void linkedlist< valuetype >::append ( valuetype  value)

Creates a new linkedlistnode containing "value" and appends it to the linkedlist.

◆ clear()

template<class valuetype >
void linkedlist< valuetype >::clear ( )

Deletes all linkedlistnodes currently in the linkedlist. Note however, that the value stored in each linkedlistnode is not deleted by this call.

◆ clearAndArrayDelete()

template<class valuetype >
void linkedlist< valuetype >::clearAndArrayDelete ( )

Deletes all linkedlistnodes currently in the linkedlist, deleting the value stored in each linkedlistnode as well, which is presumed to be an array.

◆ clearAndDelete()

template<class valuetype >
void linkedlist< valuetype >::clearAndDelete ( )

Deletes all linkedlistnodes currently in the linkedlist, deleting the value stored in each linkedlistnode as well.

◆ detach()

template<class valuetype >
void linkedlist< valuetype >::detach ( linkedlistnode< valuetype > *  node)

Detaches "node" from the list.

◆ find() [1/2]

template<class valuetype >
linkedlistnode<valuetype>* linkedlist< valuetype >::find ( linkedlistnode< valuetype > *  startnode,
valuetype  value 
)

Returns a pointer to the first linkedlistnode after "startnode" containing "value" or NULL if "value" was not found.

◆ find() [2/2]

template<class valuetype >
linkedlistnode<valuetype>* linkedlist< valuetype >::find ( valuetype  value)

Returns a pointer to the first linkedlistnode containing "value" or NULL if "value" was not found.

◆ getFirst()

template<class valuetype >
linkedlistnode<valuetype>* linkedlist< valuetype >::getFirst ( )

Returns the first node in the linkedlist.

◆ getLast()

template<class valuetype >
linkedlistnode<valuetype>* linkedlist< valuetype >::getLast ( )

Returns the last node in the linkedlist.

◆ getLength()

template<class valuetype >
uint64_t linkedlist< valuetype >::getLength ( ) const

Returns the number of nodes in the linkedlist.

◆ getNext()

template<class valuetype >
linkedlistnode<valuetype>* linkedlist< valuetype >::getNext ( linkedlistnode< valuetype > *  node)

Returns the node after "node" or NULL if this node is the last node in the list. "node" is presumed to be in the list.

◆ getPrevious()

template<class valuetype >
linkedlistnode<valuetype>* linkedlist< valuetype >::getPrevious ( linkedlistnode< valuetype > *  node)

Returns the node prior to "node" or NULL if this node is the first node in the list. "node" is presumed to be in the list.

◆ heapSort()

template<class valuetype >
void linkedlist< valuetype >::heapSort ( )

Sorts the linkedlist in ascending order using a heap sort algorithm. This sort is faster than heapSort() but uses additional memory in proportion to the size of the list.

◆ insertAfter() [1/2]

template<class valuetype >
void linkedlist< valuetype >::insertAfter ( linkedlistnode< valuetype > *  node,
linkedlistnode< valuetype > *  newnode 
)

Inserts already created linkedlistnode "newnode" into the linkedlist after "node".

◆ insertAfter() [2/2]

template<class valuetype >
void linkedlist< valuetype >::insertAfter ( linkedlistnode< valuetype > *  node,
valuetype  value 
)

Creates a new linkedlistnode containing "value" and inserts it into the linkedlist after "node".

◆ insertBefore() [1/2]

template<class valuetype >
void linkedlist< valuetype >::insertBefore ( linkedlistnode< valuetype > *  node,
linkedlistnode< valuetype > *  newnode 
)

Inserts already created linkedlistnode "newnode" into the linkedlist before "node".

◆ insertBefore() [2/2]

template<class valuetype >
void linkedlist< valuetype >::insertBefore ( linkedlistnode< valuetype > *  node,
valuetype  value 
)

Creates a new linkedlistnode containing "value" and inserts it into the linkedlist before "node".

◆ insertionSort()

template<class valuetype >
void linkedlist< valuetype >::insertionSort ( )

Sorts the linkedlist in ascending order using a modified insertion sort algorithm. This sort is slower than heapSort() but uses no additional memory.

◆ moveAfter()

template<class valuetype >
void linkedlist< valuetype >::moveAfter ( linkedlistnode< valuetype > *  node,
linkedlistnode< valuetype > *  nodetomove 
)

Moves node "nodetomove" to the position after "node" in the linkedlist.

◆ moveBefore()

template<class valuetype >
void linkedlist< valuetype >::moveBefore ( linkedlistnode< valuetype > *  node,
linkedlistnode< valuetype > *  nodetomove 
)

Moves node "nodetomove" to the position before "node" in the linkedlist.

◆ prepend() [1/2]

template<class valuetype >
void linkedlist< valuetype >::prepend ( linkedlistnode< valuetype > *  node)

Prepends already created linkedlistnode "node" to the linkedlist.

◆ prepend() [2/2]

template<class valuetype >
void linkedlist< valuetype >::prepend ( valuetype  value)

Creates a new linkedlistnode containing "value" and prepends it to the linkedlist.

◆ print() [1/2]

template<class valuetype >
void linkedlist< valuetype >::print ( ) const

Prints out a representation of the linkedlist.

◆ print() [2/2]

template<class valuetype >
void linkedlist< valuetype >::print ( uint64_t  count) const

Prints out a representation of the first "count" nodes of the linkedlist.

◆ remove() [1/2]

template<class valuetype >
bool linkedlist< valuetype >::remove ( linkedlistnode< valuetype > *  node)

Removed linkedlistnode "node" from the linkedlist.

Note that this operation does not require a search and is far less expensive than the remove(value) operation and removeAll().

Returns true on success and false on failure.

◆ remove() [2/2]

template<class valuetype >
bool linkedlist< valuetype >::remove ( valuetype  value)

Deletes the first linkedlistnode containing "value".

Note that this operation requires a search and is expensive in both execution time and code size.

Returns true on success and false on failure.

◆ removeAll()

template<class valuetype >
bool linkedlist< valuetype >::removeAll ( valuetype  value)

Deletes all linkedlistnodes containing "value".

Note that this operation requires a search and is expensive in both execution time and code size.

Returns true on success and false on failure.

◆ removeAllAndArrayDelete()

template<class valuetype >
bool linkedlist< valuetype >::removeAllAndArrayDelete ( valuetype  value)

Deletes all linkedlistnodes containing "value", deleting the values stored in the linkedlistnodes as well, which are presumed to be arrays.

Note that this operation requires a search and is expensive in both execution time and code size.

Returns true on success and false on failure.

◆ removeAllAndDelete()

template<class valuetype >
bool linkedlist< valuetype >::removeAllAndDelete ( valuetype  value)

Deletes all linkedlistnodes containing "value", deleting the values stored in the linkedlistnodes as well.

Note that this operation requires a search and is expensive in both execution time and code size.

Returns true on success and false on failure.

◆ removeAndArrayDelete() [1/2]

template<class valuetype >
bool linkedlist< valuetype >::removeAndArrayDelete ( linkedlistnode< valuetype > *  node)

Removed linkedlistnode "node" from the linkedlist, deleting the value stored in the linkedlistnode as well, which is presumed to be an array.

Note that this operation does not require a search and is far less expensive than the remove(value) operation and removeAll().

Returns true on success and false on failure.

◆ removeAndArrayDelete() [2/2]

template<class valuetype >
bool linkedlist< valuetype >::removeAndArrayDelete ( valuetype  value)

Deletes the first linkedlistnode containing "value", deleting the value stored in the linkedlistnode as well, which is presumed to be an array.

Note that this operation requires a search and is expensive in both execution time and code size.

Returns true on success and false on failure.

◆ removeAndDelete() [1/2]

template<class valuetype >
bool linkedlist< valuetype >::removeAndDelete ( linkedlistnode< valuetype > *  node)

Removed linkedlistnode "node" from the linkedlist, deleting the value stored in the linkedlistnode as well.

Note that this operation does not require a search and is far less expensive than the remove(value) operation and removeAll().

Returns true on success and false on failure.

◆ removeAndDelete() [2/2]

template<class valuetype >
bool linkedlist< valuetype >::removeAndDelete ( valuetype  value)

Deletes the first linkedlistnode containing "value", deleting the value stored in the linkedlistnode as well.

Note that this operation requires a search and is expensive in both execution time and code size.

Returns true on success and false on failure.