IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Левопрошитое дерево, проблемы
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 105
Пол: Женский
Реальное имя: Юлия

Репутация: -  0  +


Основной принцип: левый - потомок, правый - брат.
Описание дерева:
 type
PTree=^TTree;
TTree=record
LL:PTree; {левый указатель - на потомка если True, на предка если False}
RL:PTree; {правый указатель - на братьев}
Key:string; {ключ}
Sign:boolean; {признак существования потомков}
end;

Если вершины нет, то создаем ее:
 if root=NIL then begin
new(root);
root^.LL:=root; {сам на себя - предков нет}
root^.RL:=NIL; {нет братьев}
root^.Key:='root';
root^.Sign:=false; {нет потомков}

Добавление... Вроде существует два варианта - либо это первый потомок, либо нет. Не выходит реализовать это условие unsure.gif
 procedure AddElem(chto:string; kuda:PTree);
begin
new(node);
if kuda^.Sign=false then begin
kuda^.LL:=node; {на сына }
kuda^.Sign:=true; {у kuda появился потомок}
node^.RL:=NIL; {у node нет братьев}
node^.LL:=kuda; {на отца}
node^.Key:=chto;
node^.Sign:=false; {у node нет потомков}
end
else begin
node:=kuda^.LL; {находим первого сына}
while node^.RL<>NIL do
begin node:=node^.RL; end; {продвигаемся по правой ветви}
node^.RL:=NIL;
node^.LL:=kuda;
node^.Key:=chto;
node^.Sign:=false;
end;
end;
.
Подскажите, плз, как с этим разобраться...

Сообщение отредактировано: volvo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Jill, ты программку-то свою приведи, как именно ты пытаешься работать с этими процедурами/функциями?

(сразу, не проверяя, могу сказать, что функция FindNode не очень мне нравится, т.к. не в каждой точке выхода она возвращает значение, а это плохо)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 105
Пол: Женский
Реальное имя: Юлия

Репутация: -  0  +


Дело в том, что мне необходимо оформить работу в делфях. Как работают процедуры в паскальных набросках примитивны - просто вызов и что из этого получится. Функция FindNode необходима для поиска элемента, который надо изменить (ChangeNode) или для поиска элемента, подлежащего удалению.
Код вот (повторюсь, главная программа - примитивна - мне нужно понять):
" (Показать/Скрыть)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 17.06.2024 10:10
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name