Форум программистов, компьютерный форум CyberForum.ru

Функция удаления элемента из дерева, ошибка в коде - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ решение систем обыкновенных дифференциальных уравнений на си++ http://www.cyberforum.ru/cpp-beginners/thread887575.html
вот задание
C++ Написать программу проверки синтаксиса в логических операциях На с++ нужно написать программу проверки синтаксиса в логических операциях,очень срочно http://www.cyberforum.ru/cpp-beginners/thread887555.html
Есть ли утечка памяти в этом случае? C++
_Доброго денёчка всем. Прохожу тему на указатели и ссылки. Делаю упражнение на тему "написать программу, вызывающую утечку памяти". Смысл идеи "учись на ошибках и запомни как делать не нуна, а то будет ай-ай-ай". В книге приведён пример такой логической ошибки, когда в функции выполняется создание экземпляра класса, для которого оператором new в функции выделяется память. Затем ссылка на объект...
C++ Определить число нулей и единиц в массиве
диапазон изменения значений элементов массива 0 или 1 Сделать два варианта программы: -элементы массива задаются пользователем -заполняются с помощью генератора случайных чисел
C++ Определить число нулей и единиц в массиве http://www.cyberforum.ru/cpp-beginners/thread887541.html
диапазон изменения значений элементов массива 0 или 1 Сделать два варианта программы: -элементы массива задаются пользователем -заполняются с помощью генератора случайных чисел
C++ Какую роль выполняют идентификаторы в приведенном коде? Подскажите пожалуйста,какие в данной задаче идентификаторы и их назначение в ней. #include <iostream> #include <algorithm> #include <vector> #include <iterator> #include <cassert> using namespace std; int main() подробнее

Показать сообщение отдельно
Nullik
 Аватар для Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 297
Завершенные тесты: 1
02.06.2013, 11:29  [ТС]     Функция удаления элемента из дерева, ошибка в коде
Ой, оно в мэйне есть, случайно с этого кода удалила:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void main()
{
    setlocale(0,"");
    int i;
    Tree *root = NULL; // указатель на корень дерева равен NULL
    for (i=0; i<20; i++)
    {
        int* asas = new int; // вводимое значение для дерева
        cin >> *asas;
        search_and_add(asas, &root);
        delete asas;
    }
    printWithLvls (root,0);
    
 
    h = false;
 
    int* sdf = new int; // элемент, который будет удалять
    cout << "\n\nКакой элемент удаляем?\n";
    cin >> *sdf;
    search_and_delete(sdf,&root);
    delete sdf;
 
    printWithLvls (root,0);
 
    cin.get();
    cin.get();
}

Проблема в том, что я просматриваю через точки останова, и выходит вот такая штука: нашли удаляемый элемент, заменили значения, всё шик и блеск и когда функция (search_and_delete) выходит к своему самому-самому концу, она пишет:

Необработанное исключение в "0x77e415de" в "функция удаления авл дерево.exe": 0xC0000005: Нарушение прав доступа при чтении "0xfeeefefa".
что делать и как быть?

Я уже думаю, что пробелма в указателях, т.е., когда нужно удалить листик, а значение родителя и листика после выполнения функции (по алгоритму) совпадают, может указатели не меняются, и пограмма удаляет родителя, а не листик? А если удаляет листик, то чего ж она "не обрабатывает" что-то там.... В общем, это единственная проблема и мне бы очень хотелось её решить.
 
Текущее время: 08:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru