LinkedList mit Node-Objekten

mathon

Grünschnabel
Hi,

Ich arbeite derzeit an der Entwicklung einer LinkedList, dafür verwende ich eine vordefinierte Node-Klasse die ein LinkedList Toolkit zur Verfügung stellt um die LinkedList entsprechend manipulieren zu können. (http://www.cs.colorado.edu/~main/chapter5/node1.h).
Ich entwickle jetzt gerade eine Sequence-Klasse die eine Sequence von Zahlen in einer LinkedList speichern soll.

Mein header file der sequence Klasse bzw. deren methoden und variablen sieht so aus:
Code:
public:
        // TYPEDEFS and MEMBER CONSTANTS
        typedef double value_type;
        typedef std::size_t size_type;
        // CONSTRUCTORS and DESTRUCTOR
        sequence( );
        sequence(const sequence& source);
        ~sequence( );
        // MODIFICATION MEMBER FUNCTIONS
        void start( );
        void advance( );
        void insert(const value_type& entry);
        void attach(const value_type& entry);
        void operator =(const sequence& source);
        void remove_current( );
        // CONSTANT MEMBER FUNCTIONS
        size_type size( ) const { return many_nodes; }
        bool is_item( ) const { return (cursor != NULL); }
        value_type current( ) const;
    private:
    node *head_ptr;
    node *tail_ptr;
    node *cursor;
    node *precursor;
    size_type many_nodes;

Ich habe bereits die zwei Konstruktoren, den Destructor und die advance und start-Methode implementiert:
Code:
sequence::sequence()
{
    head_ptr = NULL;
    tail_ptr = NULL;
    many_nodes = 0;
}

sequence::sequence(const sequence& source)
{
    node *tail_ptr;
    list_copy(source.head_ptr, head_ptr, tail_ptr);
    many_nodes = source.many_nodes;
}

sequence::~sequence()
{
    list_clear(head_ptr);
    many_nodes = 0;
}

void sequence::start()
{
    cursor = head_ptr;
}

void sequence::advance()
{
    cursor = cursor->link();
}
Ich hoffe, die stimmen so.
Leider habe ich jetzt ein Problem bei der insert-Funktion. Entsprechend der Spezifikation sollte die insert-Funktion einen neuen Knoten vor dem Node-Objekt einfügen auf die der cursor pointer zeigt. Daher muss ich den precursor-pointer verwenden und dieser muss dann auf den Knoten vor dem, auf den der cursor-pointer zeigt, zeigen lassen. Leider ist mir nicht ganz klar, wie ich diese Position herausfinden kann...:((

Weiß vielleicht hier jemand, wie ich diese insert-Methode am effizientesten definieren kann..?:-/

matti
 
Zurück