Linked List Class
Topics
:Overview
Data Structures
Functions
The gxListNode and gxList classes makeup a generic doubly linked-list class that includes stack and queue functions.
A linked-list is a non-contiguous data structure used to link a collection of nodes together. A node is a container used to store pointers to other nodes and some type of data. In a doubly linked list each node stores a data item and pointers to the next node and previous node in sequence allowing the list nodes to be processed in two directions.
A stack is a data structure that stores nodes in last-in-first-out (LIFO) order using push and pop operations. A push operation adds a new node to the top of the stack and a pop operation removes a node from the top of the stack.
A queue is a data structure that stores node in first-in-first-out (FIFO) order using insert and extract operations. An insert operation adds a new node to tail of the queue and an extract operation removes a node from the head of the queue.
The linked-list node structure is a generic class used to store the node data, previous and next pointers.
template<class TYPE> class gxListNode { public: gxListNode() { next = prev = 0; } gxListNode(TYPE &X) : data(X) { next = prev = 0; } ~gxListNode() { } public: TYPE data; // Node data gxListNode<TYPE> *next; // Pointer to the next node in the list gxListNode<TYPE> *prev; // Pointer to the previous node in the list };
gxList::gxList()
gxList::~gxList()
gxList::Add()
gxList::AddAfter()
gxList::AddBefore()
gxList::AddToBack()
gxList::AddToFront()
gxList::AllocNode()
gxList::ClearList()
gxList::DestroyList()
gxList::DetachNode()
gxList::FreeNode()
gxList::GetHead()
gxList::GetTail()
gxList::InsertAfter()
gxList::InsertAtHead()
gxList::InsertAtTail()
gxList::InsertBefore()
gxList::IsEmpty()
gxList::MakeEmpty()
gxList::MoveAfter()
gxList::MoveBefore()
gxList::MoveToBack()
gxList::MoveToFront()
gxList::Remove()
gxList::RemoveHead()
gxList::RemoveTail()
Stack Functions:
gxList::Pop()
gxList::Push()
Queue Functions:
gxList::Insert()
gxList::Extract()
gxList::gxList()
- Default class constructor.gxList::gxList(const gxList<TYPE> &ob)
- Private class copy constructor used to disallow copying.void gxList::operator=(const gxList<TYPE> &ob)
- Private assignment operator used to disallow assignment. - Class destructor responsible for clearing the list when a list object is destroyed.gxListNode<TYPE> *gxList::Add(TYPE &X)
- Public member function used to add a new list node to the back of the list. Returns a pointer to the newly created node or a null value if heap space could not be allocated for the node.gxListNode<TYPE> *gxList::AddAfter(gxListNode<TYPE> *pos, TYPE &X)
- Public member function used to add a list node after the specified node. Returns a pointer to the newly created node or a null value if heap space could not be allocated for the node.gxListNode<TYPE> *gxList::AddBefore(gxListNode<TYPE> *pos, TYPE &X)
- Public member function used to add a list node before the specified node. Returns a pointer to the newly created node or a null value if heap space could not be allocated for the node.gxListNode<TYPE> *gxList::AddToBack(TYPE &X)
- Public member function used to add a list node to the back of the list. Returns a pointer to the newly created node or a null value if heap space could not be allocated for the node.gxListNode<TYPE> *gxList::AddToFront(TYPE &X)
- Public member function used to add a list node to the front of the list. Returns a pointer to the newly created node or a null value if heap space could not be allocated for the node.gxListNode<TYPE> *gxList::AllocNode(TYPE &X)
- Private member function used to allocate a new list node. - Public member function used to clear the list. - Public member function used to clear the list and destroy the node data.void gxList::DetachNode(gxListNode<TYPE> *n)
- Public member function used to detach the node from its current location. - Public queue operation used to extract a list node from the list. Returns true if the node was extracted.int gxList::FreeNode(gxListNode<TYPE> *n, TYPE &X)
- Private member function used to free the memory location of the node without releasing the nodes data pointer. NOTE: This function assumes that the node has already been detached from the list. Returns a true if the node was deleted.gxListNode<TYPE> *gxList::GetHead()
- Public member function that returns the head of the list.gxListNode<TYPE> *gxList::GetTail()
- Public member function that returns the tail of the list.gxListNode<TYPE> *gxList::Insert(TYPE &X)
- Public queue operation used to insert a list node into the list. Returns a pointer to the node or a null value if memory for the node could not be allocated.void gxList::InsertAfter(gxListNode<TYPE> *pos, gxListNode<TYPE> *n)
- Public member function used to insert a new or detached node after the node residing at the specified location.void gxList::InsertAtHead(gxListNode<TYPE> *n)
- Public member function used to insert a node at the head of the list.void gxList::InsertAtTail(gxListNode<TYPE> *n)
- Public member function used to insert a node at the tail of the list.void gxList::InsertBefore(gxListNode<TYPE> *pos, gxListNode<TYPE> *n)
- Public member function used to insert a new or detached node before the node residing at the specified location. - Public member function that returns true if the list is empty. - Public member function used to reset the head and tail pointers. NOTE: This function should only be called only if all the nodes have been removed.void gxList::MoveAfter(gxListNode<TYPE> *pos, gxListNode<TYPE> *n)
- Public member function used to move an existing node after the node residing at the specified location.void gxList::MoveBefore(gxListNode<TYPE> *pos, gxListNode<TYPE> *n)
- Public member function used to move an existing node before the node residing at the specified location.void gxList::MoveToBack(gxListNode<TYPE> *n)
- Public member function used to move the specified node to the back of the list.void gxList::MoveToFront(gxListNode<TYPE> *n)
- Public member function used to move the specified node to the front of the list. - Public stack operation used to pop a list node from the list. Returns a true if the node was popped.gxListNode<TYPE> *gxList::Push(TYPE &X)
- Public stack operation used to push a list node into the list. Returns a pointer to the node or a null value if memory for the node could not be allocated.int gxList::Remove(gxListNode<TYPE> *n, TYPE &X)
- Public member function used to remove the specified node from the list and pass back the node data. Returns true if the node was removed.int gxList::Remove(gxListNode<TYPE> *n)
- Public member function used to remove the specified node from the list. Returns true if the node was removed.int gxList::RemoveHead(TYPE &X)
- Public member function used to remove the first node in the list. Returns true if the node was removed.int gxList::RemoveTail(TYPE &X)
- Public member function used to remove the last node in the list. Returns true if the node was removed.
End Of Document |