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:
Ich habe bereits die zwei Konstruktoren, den Destructor und die advance und start-Methode implementiert:
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
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();
}
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