|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.07.2012, 16:42 | #1 |
Пользователь
Регистрация: 05.04.2012
Сообщений: 56
|
Дерево
Здравствуйте, я попробовал реализовать полное дерево в котором попытался выполнить следующие условия:
1. Количество потомков(1 уровня) не может быть больше 4 2. В дерево не может быть добавлено больше 30 элементов 3. Если можно выполнить пункт 1- добавляем потомок в любой указанный родительский элемент. В общем ошибка вылетает при обращении к родительской переменной хранящей число всех детей. "Необработанное исключение в "0x00c51484" в "test.exe": 0xC0000005: Нарушение прав доступа при чтении "0xccccccd0"." Что я намутил? Код:
Последний раз редактировалось Dizelektwo; 08.07.2012 в 20:25. |
08.07.2012, 18:09 | #2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
f.toTree(2,1); - Но элемента с номером 1 еще не существует. Поэтому Код:
I'm learning to live...
|
|
08.07.2012, 18:11 | #3 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
кривовато, но хоть читается
ошибка тут: addr[current]->countChildren++; потому что индексация массивов в С начинается с нуля В массиве 1 элемент, вы пишите addr[1], но надо addr[0]. да и вообще, криво все это, что вы пытаетесь сделать? ---------------к вопросу не совсем относится: в коде есть void null(){ tree:count=NULL; }, МБ я неверно понял его назначение, но если верно понял - то замените его чем-то таким: tree() : count( 0 ) {} (конструктор добавьте) А еще, поля класса не кошерно размещать в открытой секции, я про это: int count; unit * addr[30]; принцип инкапсуляции у вас нарушен. А еще, замените уже свой NULL на 0, я понимаю еще когда указателю NULL присваивают(хотя, если мне не изменяет память, небезызвестный Страуструп рекомендовал избегать NULL), но писать так: count==NULL....я не понимаю. добавил Коварный стилет меня опередил на 2 минуты (вроде бы не в первый раз xD) Добавить хотел..пользуйтесь отладчиком уже, посмотрите стек вызовов(узнаете в какой функции ошибка), ну а затем пройдитесь по шагам и посмотрите на значения переменных. Последний раз редактировалось rrrFer; 08.07.2012 в 18:15. |
08.07.2012, 18:29 | #4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
08.07.2012, 19:08 | #5 |
Пользователь
Регистрация: 05.04.2012
Сообщений: 56
|
Эко упущение смешное. И про 1 адрес массива и про инкапсуляцию знал, да что-то совсем меня попутало.
Да и знаем мы что пишем криво, главное ведь то, что стараемся и прислушиваемся к грамотным людям . Все приходит с опытом и за советы большое спасибо. Благодарю) Ну а написать хотел то, что уже написано. Добавление элемента к узлу, создание связи и т.п Можно сказать -необычное дерево. п.с Да, набыдлокодил. Цитата:'NULL это просто макрос для 0, который рекомендовано использовать для обозначения нулевого указателя'. Может пригодится кому-нибудь из новичков. А я то считал что NULL это кашерно ^^ Последний раз редактировалось Dizelektwo; 08.07.2012 в 19:20. Причина: добавлено |
08.07.2012, 19:22 | #6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Это было бы круто.
I'm learning to live...
|
|
08.07.2012, 19:39 | #7 |
Пользователь
Регистрация: 05.04.2012
Сообщений: 56
|
Ну обход этого дерева можно реализовать, вполне реально. Под XPath Вы подразумеваете "XPath (XML Path Language) — язык запросов к элементам XML-документа"?. Цитата из вики.
Да и еще один вопрос, не совсем по теме- не подскажите ли самую сложную структуру данных? Я понимаю что это будет некоторый граф. Но какой именно и с каким "функционалом"? Последний раз редактировалось Dizelektwo; 08.07.2012 в 19:46. |
08.07.2012, 21:42 | #8 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Цитата:
I'm learning to live...
|
||
09.07.2012, 10:44 | #9 |
В прострации
Форумчанин
Регистрация: 13.01.2009
Сообщений: 239
|
Тренируешься в написании программ? Попробуй реализовать 2-3+ дерево или B+ дерево. Красно-чёрное для затравки.
Пол-жизни сидючи, в монитор глядючи...
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
дерево | jekie182 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 27.04.2012 15:40 |
Я дерево | Кукла_колдуна | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 20.03.2011 23:07 |
Дерево в С# | vedro-compota | C# (си шарп) | 5 | 07.11.2010 14:02 |
дерево С# | Natok | Помощь студентам | 0 | 14.09.2009 23:42 |
Дерево | Yoger | БД в Delphi | 3 | 25.01.2007 01:24 |