Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Andrew Plyako                        2:5030/922.20  08 Mar 2002  16:17:28
 To : Evgeniy Jirnov
 Subject : Hерекурсивный алгоритм обхода дерева папок на диске
 -------------------------------------------------------------------------------- 
 
  > Подскажите сабж please...
 
   Зависит от того, что ты называешь "деревом папок" (о какой файловой системе
 речь), что ты называешь "обходом" (какими операциями в файловой(ых) системах
 разрешено пользоваться) и что ты называешь "нерекурсивным" (использованием
 стека, как известно, можно заминить любую рекурсию).
 
   Поэтому абстрагируемся от папок и файлов; возьмем обыкновенное дерево в
 котором:
 1) нода (узел/лист) содержит ссылку на своего родителя;
 2) всех потомков одного узла можно каким-либо (фиксированным) образом
 упорядочить.
   Тогда можно привести алгоритм, получения по текующей ноде -- следующую (в
 порядке обхода дерева, в соответствии с выбранным упорядочеванием).
 
 Hапример:
 
 Процедура GetNextNode.
 
 0) -> Hа входе процедуры: ссылка на текущую ноду дерева (CurrentNode)
 
 1) [:=] Претендентом на следующую в порядке обхода ноду (NextNode) назначаем
    первый (согласно упорядочиванию) потомок CurrentNode
 2) [if] Если такого элемента нет (CurrentNode -- лист) то:
 2.1) [repeat] Запускаем итерации вида repeat-until (do-while).
 2.1.1) [:=] tempNode := CurrentNode (Сохраняем значение CurrentNode)
 2.1.2) [:=] CurrentNode := CurrentNode.Parent (Делаем CurrentNode ссылкой на
             своего родителя)
 2.1.3) Если последняя операция невозможна (CurrentNode -- корень дерева),
        значит мы полностью обошли дерево; прерываем работу процедуру,
        условленным образом сигнализируем о завершении обхода дерева.
 2.1.4) [if] Если tempNode не последний (согласно упорядочиванию) потомок
             CurrentNode, то NextNode называем следующий (согласно
             упорядочиванию) потомок CurrentNode _после_ tempNode
 2.2) [until] repeat-until цикл 2.1.* повторяется до тех пор, пока не будет
              присвоенно значение переменной NextNode (см.пункт 2.1.4)
 3) [fi] Конец ветвления 2.*
 4) <- Hа выход процедуры подается NextNode.
 Обход дерева с использованием этой процедуры выглядит так:
 
 Current ПРИСВОИТЬ ЗHАЧЕHИЕ "ссылка на Корень дерева".
 ДЕЛАЕМ (цикл repeat-until | do-while)
    Обрабатываем ноду Current (например, выводим на экран).
    Сurrent ПРИСВОИТЬ ЗHАЧЕHИЕ GetNextNode от входного параметра Current.
 ПРЕКРАЩАЕМ (цикл) если получили условный сигнал о завершении обхода.
 
 Andrew
 
 ---
  * Origin: Думать безОбразно -- безобрАзно!!! (2:5030/922.20)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Hерекурсивный алгоритм обхода дерева папок на диске   Evgeniy Jirnov   01 Mar 2002 09:00:00 
 Hерекурсивный алгоритм обхода дерева папок на диске   Sergey Kabikov   04 Mar 2002 09:52:42 
 Hерекурсивный алгоритм обхода дерева папок на диске   Aleksey Malov   04 Mar 2002 14:48:42 
 Hерекурсивный алгоритм обхода дерева папок на диске   Sergey Kabikov   05 Mar 2002 08:51:33 
 Re: Hерекурсивный алгоритм обхода дерева папок на диске   Andrey Tarasevich   05 Mar 2002 23:56:42 
 Hерекурсивный алгоритм обхода дерева папок на диске   Comoderator Of Ru Algorithms   09 Mar 2002 17:20:21 
 Re: Hерекурсивный алгоритм обхода дерева папок на диске   Andrey Tarasevich   12 Mar 2002 20:55:29 
 Re: Hерекурсивный алгоритм обхода дерева папок на диске   Andrey Tarasevich   12 Mar 2002 21:38:38 
 [*] Hерекурсивный алгоритм обхода дерева папок на диске   Comoderator Of Ru Algorithms   13 Mar 2002 21:34:31 
 Re: Hерекурсивный алгоритм обхода дерева папок на диске   Andrey Tarasevich   05 Mar 2002 02:14:26 
 Hерекурсивный алгоритм обхода дерева папок на диске   Evgeniy Jirnov   05 Mar 2002 10:04:02 
 Re: Hерекурсивный алгоритм обхода дерева папок на диске   Andrey Tarasevich   07 Mar 2002 01:13:51 
 Hерекурсивный алгоритм обхода дерева папок на диске   Ilia Kantor   07 Mar 2002 21:36:08 
 Re: Hерекурсивный алгоритм обхода дерева папок на диске   Andrey Tarasevich   08 Mar 2002 04:42:59 
 Hерекурсивный алгоритм обхода дерева папок на диске   Dmitry Demchuk   07 Mar 2002 22:11:00 
 Re: Hерекурсивный алгоритм обхода дерева папок на диске   Andrey Tarasevich   08 Mar 2002 12:24:02 
 Hерекурсивный алгоритм обхода дерева папок на диске   Dmitry Demchuk   08 Mar 2002 02:22:00 
 Re: Hерекурсивный алгоритм обхода дерева папок на диске   Andrey Tarasevich   08 Mar 2002 21:51:51 
 Hерекурсивный алгоритм обхода дерева папок на диске   Dmitry Demchuk   09 Mar 2002 01:22:00 
 Hерекурсивный алгоритм обхода дерева папок на диске   Ilia Kantor   10 Mar 2002 13:57:32 
 Re: Hерекурсивный алгоритм обхода дерева пап ок на диске   Andrew Ezhguroff   08 Mar 2002 21:41:36 
 Hерекурсивный алгоритм обхода дерева папок на диске   Comoderator Of Ru Algorithms   09 Mar 2002 20:09:34 
 Re: Hерекурсивный алгоритм обхода дерева пап ок на диске   Andrew Ezhguroff   04 Mar 2002 18:51:27 
 Re: Hерекурсивный алгоритм обхода дерева папок на диске   Valentin Davydov   04 Mar 2002 20:28:42 
 Hерекурсивный алгоритм обхода дерева папок на диске   Valentin Ermolaev   06 Mar 2002 15:58:56 
 Re: Hерекурсивный алгоритм обхода дерева папок на диске   Valentin Davydov   08 Mar 2002 23:13:44 
 Hерекурсивный алгоритм обхода дерева папок на диске   Andrew Plyako   08 Mar 2002 16:17:28 
 Re: Hерекурсивный алгоритм обхода дерева папок на диске   Andrey Tarasevich   11 Mar 2002 02:37:52 
 Hерекурсивный алгоритм обхода дерева папок на диске   Maxim Lanovoy   05 Mar 2002 20:44:32 
 Re: Hерекурсивный алгоритм обхода дерева папок на диске   Nikolay Bannich   07 Mar 2002 11:38:34 
 Hерекурсивный алгоритм обхода дерева папок на диске   Roman Vorobets   05 Mar 2002 16:58:29 
Архивное /ru.algorithms/38693c88e292.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional