Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Функция сортировки или печати по уровням


Автор: freed0m 15.12.2004, 22:57
Народ, выручайте надо лабу сдавать, осталась только функция распечатки по уровням или сортировки(балансировки) на выбор, всё остальное сделано, очень надо! А сам уже голову сломал, помогите хотя бы алгоритмом, как это можно примерно сделать! Заранее спасибо!

Автор: azesmcar 16.12.2004, 13:06
Рекурсией, также как и с поиском по директориям...
Код

class CTree
{
public:
virtual bool IsTree() = 0;
char* ItemName();
CTree *FindFirst(); //Функция для нахождения первого обьекта
CTree *FindNext(); //Функция для нахождения дальнейших обьектов
//После нахождения обьекта проверяется его тип..Если это дерево то вызывается рекурсивная функция уже для этого дерва
//Если нет то на экран выводится наименование обьекта
//Здесь надо реализовать само дерево, я не знаю в каком оно у тебя виде, но если еще на написано лучще будет так написать
};

class CTreeRoot : public CTree
{
public:
virtual bool IsTree() { return true; };
};

class CTreeItem : public CTree
{
public:
virtual bool IsTree() { return false; };
};

void PrintTree(CTree *pRoot)
{
CTree* pItem = pRoot->FindFirst();
do
{
 if (pItem->IsTree())
 {
  printf("%s", pItem->ItemName());
  PrintTree(pItem);
 } else
 {
  printf(" %s", pItem->ItemName());
 }
} while ( (pItem = pRoot->FindNext()) != NULL );
}


Добавлено @ 13:08
Должно быть примерно что то вроде этого, можно конечно и по другому, без классов но так намного лучше получится...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)