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); { получить новую вершину }
            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 килобайт ) Кол-во скачиваний: 228


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  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

 

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