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

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

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

 
 Ответить  Открыть новую тему 
> помогите пожалуйста с деревьями, Деревья-добавление и удаление листьев
Rzevsky
сообщение 11.10.2004 18:50
Сообщение #1


Гость






Задача звучит так: используя представление дерева, с помощью связных списков написать программу для добавления и удаления листьев дерева.
Пожалуйста помогите, если не трудно.
 К началу страницы 
+ Ответить 
Amro
сообщение 11.10.2004 22:58
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 146
Пол: Мужской

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


Мда деревья это муть полная......я сам трудно врубаюсь......
вот раскопал кое-что, это реализация дерева(т.е как раз добавление элементов) и его вывод, в узлах дерева нах-ся символы, которые добавляются в дерево при помощи сравнения их ASCII кодов

{ вывод на экран вершин дерева /слева направо/ }
       program DisplayTree;
       uses Crt;
       type
         TreePointer = ^tree;
         tree = record
           data: char;
           left: TreePointer;
           right: TreePointer;
           end;
       var
         root, dummy: TreePointer;
         ch:char;

       function STree(root, r:TreePointer; data: char):TreePointer;
       begin
         if r = nil then
         begin
           new®; { получить новую вершину }
           r^.left := nil;
           r^.right := nil;
           r^.data := data;
           if data < root^.data then root^.left := r
           else root^.right := r;
          STree := r;
        end else
        begin
          if data<r^.data then STree := STree(r, r^.left, data)
          else STree := STree(r, r^.right, data)
        end;
       end; { конец процедуры STree }

       procedure PrintTree(r: TreePointer; n: integer);
       var
         i:integer;
       begin
         if r<>nil then begin
            PrintTree(r^.left, n+1);
            for i := 1 to n do Write('   ');
            Writeln(r^.data);
            PrintTree(r^.right, n+1);
          end;
       end; { конец процедуры PrintTree }
       begin
         root := nil;
         repeat
           Write('enter a letter (Q to quit): ');
           ch := ReadKey; Writeln(ch);
           if root= nil then root := STree(root, root, ch)
           else dummy := STree(root, root, ch);
           ch := UpCase(ch);
        until ch ='Q';
       PrintTree(root, 0);
     end.

Rzevsky ИТ 21 Штурмует форум :D АГУ ФоревА :P


--------------------
Закон иудеев: Семь раз отмерь, один отрежь.
Закон экономии: Семь раз отмерь, семь раз отрежь.
Закон программиста: Семь раз отрежь, ошибся, отмерь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Amro
сообщение 11.10.2004 23:06
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 146
Пол: Мужской

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


Вот тебе удаление нашёл........это всё из книг, которые выложены на pascal.dax.ru Поскачивай можь чёто полезное и найдешь, для себя.......
Код

{ удаление элемента из дерева }
         function DTree(root:TreePointer;key:char):TreePointer;
         var
           temp,temp2:TreePointer;

        begin
          if root^.data = key then
          begin
            if root^.left=root^.right tnen
            begin
              dispose(root)
              DTree := nil;
            end
            else  if root^.left=nil tnen
            begin
              temp := root^.right
              dispose(root)
              DTree := temp;
            end
            else  if root^.right=nil tnen
            begin
              temp := root^.left
              dispose(root)
              DTree := temp;
            end
            else
            begin  { имеются два листа }
              temp2 := root^.right
              temp := root^.right
              while temp^.left <> nil do temp := temp^.left;
              temp^.left := root^.left
              dispose(root);
              DTree := temp2
            end;
            else
            begin
              if root^.data < key
              then root^.right :=  DTree(root^.right, key)
              else root^.left :=  DTree(root^.left, key)
              DTree := root;
            end;
          end; { конец функции DTree }


С другой стороны Rzevsky нашему господину Б по-моему всё равно, ему лишь бы прога была.....он её даже смотреть мне кажется не будет....................и лабу тебе зачтёт, главное ему её объяснить!!!
Rzevsky а ты лодырь, у тебя ж с паскалем всё хорошо, почему бы самому пару дней не посидеть??? А работа же, тогда понятно!!!!
ОСТОРОЖНЕЕ! не грубить! moderator

Сообщение отредактировано: Oleg_Z - 12.10.2004 8:25


--------------------
Закон иудеев: Семь раз отмерь, один отрежь.
Закон экономии: Семь раз отмерь, семь раз отрежь.
Закон программиста: Семь раз отрежь, ошибся, отмерь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 12.10.2004 8:23
Сообщение #4


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

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


Прошу прощения у посетителей форума, в старом факе была эта тема, я его удалил, а в новый еще не занес...
в присоед. файле модуль для работы с деревьями. Там все операции.
Rzevsky, скоро я все выложу. Готовлю сейчас FAQ.


Прикрепленные файлы
Прикрепленный файл  TREE.pas ( 1.83 килобайт ) Кол-во скачиваний: 229


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Rzevsky
сообщение 12.10.2004 18:19
Сообщение #5


Гость






Большое спасибо, Amro smile.gif
 К началу страницы 
+ Ответить 
BlackShadow
сообщение 18.10.2004 22:08
Сообщение #6


Гость






Есть ещё такая тема: Composite Template называется. Слышал кто? Мне понравилось...
 К началу страницы 
+ Ответить 
Atos
сообщение 19.10.2004 6:27
Сообщение #7


Прогрессор
****

Группа: Модераторы
Сообщений: 602
Пол: Мужской
Реальное имя: Михаил

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


Это что-то, связанное с шаблонами?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 12.08.2025 4:08
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"