Gennemløb af linked list (moveNext etc.)
Hejsa der!Jeg sidder og pusler med en lille linked list som bruger en streng som indeks (som et slags hashtabel).
Jeg har imidlertid et problem med min moveNext() iterator. Her er klassens definition:
template <class Type>
class List
{
private:
ListNode<Type> *first;
int num_nodes;
public:
List();
~List();
Type* operator[](char *) const;
int count() const { return num_nodes; }
ListNode<Type> *current;
bool moveNext();
void reset();
void add(char*, Type*);
void remove(char *name);
Type* get(char *name);
};
operator[](char*) og get(char*) er det samme, de er der bare for nemhedens skyld. :-)
Her er de relevante funktioner:
template <class Type>
void List::reset() { current = NULL; }
template <class Type>
bool List::moveNext()
{
if (current == NULL)
{
current = first;
return true;
}
else
{
current = current->next;
if (current == NULL)
return false;
return true;
}
}
Problemet er som sagt moveNext() - den springer så vidt jeg kan se over det første objekt i listen.
Hvis det skulle have interesse er her ListNode<Type>:
template <class Type>
class ListNode
{
friend class List<Type>;
public:
char *name;
Type *node;
ListNode<Type> *next;
ListNode(char *na, Type *no) : name(na), node(no) {}
~ListNode() { delete node; }
};
På forhånd tak!
- Simon