Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
Мой лучший совет состоял бы в том, что нет никакой стандартной древовидной структуры данных, потому что существует столько способов, которыми Вы могли реализовать его, что будет невозможно покрыть все основания одним решением. Чем более конкретный решение, тем менее вероятно это применимо к любой данной проблеме. Я даже раздражаюсь из-за LinkedList - что, если я хочу круговой связанный список?
базовая структура, которую необходимо будет реализовать, будет набором узлов, и здесь является некоторыми опциями запустить Вас. Давайте предположим, что класс Узел является базовым классом всего решения.
, Если необходимо только переместиться вниз по дереву, затем классу Узла нужен Список детей.
, Если необходимо переместиться по дереву, тогда классу Узла нужна ссылка на ее родительский узел.
Сборка метод AddChild, который заботится обо всем minutia этих двух точек и Разное логики, которая должна быть реализована (дочерние пределы, сортируя детей, и т.д.)
Если требуется записать собственное, можно запустить с этого документа с шестью частями, детализирующего эффективное использование структур данных C# 2.0 и как пойти об анализе реализации структур данных в C#. Каждая статья имеет примеры и установщик с образцами, наряду с которыми можно следовать.
Обширное Исследование “An Структур данных Используя C# 2.0” Scott Mitchell
Вообще превосходное Библиотека Универсального набора C5 имеет несколько различных основанных на дереве структур данных, включая наборы, сумки и словари. Исходный код доступен, если Вы хотите изучить их детали реализации. (Я использовал наборы C5 в производственном коде с хорошими результатами, хотя я не использовал ни одной из древовидных структур конкретно.)
delegate void TreeVisitor<T>(T nodeData);
class NTree<T>
{
private T data;
private LinkedList<NTree<T>> children;
public NTree(T data)
{
this.data = data;
children = new LinkedList<NTree<T>>();
}
public void AddChild(T data)
{
children.AddFirst(new NTree<T>(data));
}
public NTree<T> GetChild(int i)
{
foreach (NTree<T> n in children)
if (--i == 0)
return n;
return null;
}
public void Traverse(NTree<T> node, TreeVisitor<T> visitor)
{
visitor(node.data);
foreach (NTree<T> kid in node.children)
Traverse(kid, visitor);
}
}
Простая рекурсивная реализация... < 40 строк кода... Нужно просто держать ссылку на корень дерева вне класса, или обернуть его в другой класс, может быть, переименовать в TreeNode??
Используйте GetMessageEnumerator2 () так:
MessageEnumerator en = q.GetMessageEnumerator2();
while (en.MoveNext())
{
if (en.Current.Label == label)
{
string body = ((XmlDocument)en.Current.Body).OuterXml;
en.RemoveCurrent();
return body;
}
}
-121--4863386- В дополнение к уже упомянутым Selenium IDE .
-121--2424878-См. http://quickgraph.codeplex.com/
QuickGraph предоставляет универсальные направленные/неориентированные структуры и алгоритмы графов для .Net 2,0 и выше. QuickGraph поставляется с такими алгоритмами, как глубина первого поиска, поиск первым дыханием, поиск A *, кратчайший путь, k-кратчайший путь, максимальный поток, минимальное покрывающее дерево, наименьшие общие предки и т.д. QuickGraph поддерживает MSAGL, GLEE и Graphviz для визуализации графиков, сериализации в GraphML и т.д.