Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Паскаль.Деревья  (Прочитано 5728 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Viwwna
Интересующийся

ru
Offline Offline

« : 30-06-2012 16:34 » 

Помогите сделать рабочей прогу:
Код: (Pascal)
Type

         Tree = ^Ver;

         Ver = record

                   Inf: <тип данных>;

                   Left, Right: Tree

                   end;

 

function Count (T: Tree; A: <тип данных>) : byte;

var

       S: Spisok;  {указатель на стек}

         k: byte;      {количество вершин со значением А}

begin

    PystStek(S);

    k:=0;                

    While T<> nil do    {T 3/4 ссылка на текущую (очередную) вершину, начинаем с корня}

         begin

             if  T^.Inf = A  

                k:= k+1;

             {переходим к следующей вершине}

              if T^.Left <> nil

                 then  {если есть ветвь влево}

                   begin

                       {проверяем, есть ли еще и правая ветвь}

    {если да, то заносим ссылку на нее в стек (запоминаем) и двигаемся влево}

                        if T^.Right <> nil

then InsStek (S, T^.Right);

                        T:= T^.Left {текущей становится левая вершина}

                   end

                  else  {нет ветви влево}

                   if T^.Right  <> nil {но есть ветвь вправо}

                     then   T:= T^.Right

{двигаемся вправо, т.е. текущей становится правая вершина}

                      else  {нет обеих ветвей, т.е. вершина является листом дерева}

                          begin

                            {необходимо вернуться к той вершине, которая находится в стеке}                              

if StekPyst(S) {если стек пуст}

then T:= nil {конец работы}

                                               else DelStek(S,T)

{если стек не пуст, удаляем из него вершину,

одновременно, передавая ее адрес как адрес текущей вершины, т.е. переходим на ее обработку}


                           end;

            end;  {while}

         count:= k

end;

Спасибо, кому это не затруднительно сделать.
« Последнее редактирование: 30-06-2012 17:34 от Sla » Записан
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 30-06-2012 17:35 » 

А ву чем собственно вопрос?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Viwwna
Интересующийся

ru
Offline Offline

« Ответ #2 : 30-06-2012 19:04 » new

Sla, S: Spisok;  {указатель на стек}????и еще какой <тип данных> сделать?   
Задание такое: Напишите программу, определяющую число вхождений эле-мента A в дерево Т.

Добавлено через 29 минут и 25 секунд:
Sla, Вопрос снимается,со всем разобралась. Спс за участие.
« Последнее редактирование: 30-06-2012 19:41 от viwwna » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines