pointers and linked list

Discussion in 'C++' started by Pats, May 20, 2004.

  1. Pats

    Pats Guest

    Hello everyone I'm new here...

    Just needed help on pointers and linked list how to implement
    these...? What are the guidelines... and a sample program using
    these.. Thanks!!!:)
     
    Pats, May 20, 2004
    #1
    1. Advertisements

  2. Pats

    Allan Bruce Guest

    For a basic linked list you need to specify a basic node class. This should
    have a pointer to some data, and methods for removing/inserting a new node
    (at the head or tail only for a single-linked list or at any point for a
    double-linked list).

    To store the data, either use a template, or my preferred solution is to
    specify an abstract class with no members which must be inherited from to
    store data in the list. The data would be stored in the node as a pointer
    to this abstract class.

    here is a basic interface (untested)

    class DataItem
    {
    public:
    DataItem(){}
    virtual ~DataItem(){}
    };

    class DoubleListNode
    {
    protected:
    ListNode(DataItem *xiData);
    virtual ~ListNode();

    DataItem *mData;
    DoubleListNode *mNextNode;
    DoubleListNode *mPrevNode;
    };

    class DoubleList
    {
    public:
    DoubleList();
    virtual ~DoubleList();

    DataItem *Insert(DataItem *xiNewItem);
    DataItem *Remove(DataItem *xiNewItem);

    // any other interface required

    protected:
    unsigned long mNumNodes;
    DoubleListNode *mHead;
    DoubleListNode *mTail;
    };



    I would also add some form of iterator to the list, but I`ll leave something
    for you to do!
    To make this List store integers, make a new DataItem like this:

    class IntDataItem : public DataItem
    {
    IntDataItem(int xiInt) {mInt = xiInt;}
    virtual ~IntDataItem();

    int GetInt() {return mInt;}

    private:
    int mInt;
    };


    Hope this helps
    Allan
     
    Allan Bruce, May 20, 2004
    #2
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.