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

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

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

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


Гость






Задача звучит так: используя представление дерева, с помощью связных списков написать программу для добавления и удаления листьев дерева.
Пожалуйста помогите, если не трудно.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -


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


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

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

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


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


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


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


Гость






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


Гость






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


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

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

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


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

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

 





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