У меня есть входной файл
0 0 7
7 0 25
7 1 12
25 0 18
25 1 3
18 0 6
12 0 22
12 1 8
По этому файлу строится бинарное дерево. Первая цифра обозначает значение родителя, если она равна 0, то это корень. Вторая цифра говорит будет новый элемент справа или слева (0 или 1). Третий символ это значение нового узла. Метод добавления элемента
void add(ONode *&tree, int val, int left = NULL) {
if(tree == NULL) {
tree = new ONode;
tree->val = val;
tree->left = tree->right = NULL;
}
else {
(left == 1) ? add(tree->right, val) : add(tree->left, val);
}
}
И само добавление
while(!feof(input)) {
int p, l, v;
fscanf(input, "%d %d %d", &p, &l, &v);
if(p == 0) add(a, v);
else {
ONode *t = NULL;
t = search(a, p);
add(t, v, l);
}
}
Но всё рушится когда пытаюсь добавить 18 в дерево, с выводом
Первый этап обработки исключения по адресу 0x00CF3E21 в ConsoleApplication12.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xFDFDFE01. Необработанное исключение по адресу 0x00CF3E21 в ConsoleApplication12.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xFDFDFE01.
в чём может быть дело ?
Первое, что нужно сделать это поставить брекпоинт и запустить отладчик (так найдётся место на котором вылет...)
left
и right
?
(они так и остаются равные "0" )вот вам и ошибка доступа...
Решение: проблема была в функции search
.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Задача следующая на visual C++Код программы не требуется! Прочтите внимательно, может кто знает, или укажет, где посмотреть, куда обратиться
UPD: Переписал код и не пойму, почему вылетает на for(j = gr[i]list
Есть генератор UDP пакетов и снифферКогда сниффер ловит нужный пакет , сохраняю его содержимое в файл