Я написал простой класс LinkedList. Сначала у меня есть класс Node:
class Node
{
public:
Node* next;
int value;
Node(int val)
{
value = val;
next = NULL;
}
Node(int val, Node* y)
{
value = val;
next = y;
}
}
тогда реализация LinkedList проста, с Node* head
член и addNode(int value)
функция-член.
Каковы другие способы реализации связанного списка? могли бы дать другие подобные реализации или намекнуть на соответствующий документ?
Спасибо и всего наилучшего.
Стандартная библиотека определяет реализацию двусвязного списка, которую вы можете использовать (см. Вот, например). Я бы посоветовал использовать это, если у вас нет очень веских причин не делать этого.
Boost имеет несколько реализаций:
http://www.boost.org/doc/libs/1_51_0/doc/html/intrusive/slist.html
http://www.boost.org/doc/libs/1_51_0/doc/html/intrusive/list.html
deleteNode
findNode
Также лучше использовать списки инициализации в конструкторах и частных членах данных. NULL для C, используйте 0 вместо.
то есть
class Node
{
private:
Node* next;
int value;
public:
Node(int val) : next(0), value(val) {}
Node(int val, Node *n) : next(n), value(val) {}
int getVale() { return value}
};