000
18.10.2006, 17:37 Uhr
mathon
|
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 |