Menu

LinkList

rwaury

LinkList is a simple doubly linked list class.


Files

  • LinkList.cpp
  • LinkList.h

Classes

All elements of LinkList have to inherit from class Link.

Linked list class

Methods:

  • void AddAfter(Link *ToAdd, Link *Before)
    Adds ToAdd to list after Before.

  • void AddBefore(Link *ToAdd, Link *After)
    Adds ToAdd to list before After.

  • void AddBottom(Link *ToAdd)
    Appends ToAdd to list.

  • void AddTop(Link *ToAdd)
    Prepends ToAdd to list.

  • void ChainSaw()
    Removes all elements from list and deletes them.

  • Link* GetFirst()
    Returns first element of list.

  • Link* GetNext(Link *Current)
    Returns element after Current, NULL if none.

  • Link* GetLast()
    Returns last element of list.

  • Link* GetPrev(Link *Current)
    Returns element before Current, NULL if none.

  • void Remove(Link *ToRemove)
    Removes ToRemove from list but does not delete it.

  • void SetAutoCleanup(bool Cleanup)
    If Cleanup is set to true Destructor will also delete all elements (the destructor calls ChainSaw()).


Functions

DefineLinkList(ListName,Type)

Creates class for linked list at compile time.


Usage

Example of a LinkList for doubles:

#include "LinkList.h"

class DoubleLink : public Link
{
    private:
        double d;
    public:
        DoubleLink(double value) {d = value;};
        ~DoubleLink();
        double getValue(){return d;};
}

DefineLinkList(DoubleList, DoubleLink);

/* set up */
DoubleList list = new DoubleList();
list.SetAutoCleanup(true);

/* write */
DoubleLink* d1 = new DoubleLink(1.0);
list.AddTop(d1); // 1.0
DoubleLink* d2 = new DoubleLink(2.0);
list.AddBottom(d2);: // 1.0, 2.0
DoubleLink* d3 = new DoubleLink(3.0);
list.AddBefore(d3, d2); // 1.0, 3.0, 2.0
DoubleLink* d4 = new DoubleLink(4.0);
list.AddAfter(d4, d1); // 1.0, 4.0, 3.0, 2.0

/* read */
DoubleLink* dx;
dx = list.GetFirst(); // 1.0
dx = list.GetLast(); // 2.0
dx = list.GetPrev(d2); // 3.0
dx = list.GetNext(d2); // NULL
dx = list.GetNext(d4); // 3.0

/* remove */
list.Remove(d4); // 1.0, 3.0, 2.0
list.ChainSaw(); // list is now empty

Related

Wiki: Home