Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Заполнение дерева 
:(
    Опции темы
29AHexNumber
Дата 8.6.2010, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 6.12.2009

Репутация: нет
Всего: нет



Нужно заполнить дерево так, чтобы указатели помещались наиболее ближе к корню, т.е. чтобы пока не заполнился один уровень он на другой не переходил. Я так понял, что нужно использовать рекурсию. Структура дерева следующая:

Код

struct tree
{
        char* str;
        tree** chs;
        int count_chs;
        int inited;
        void init(int lvl)
        {
                str=NULL;
                count_chs=1;
                int i,j,k;
                for(k=lvl;k!=0;k--)
                        count_chs*=2;
                chs=new tree*[count_chs];
                for(i=0;i<count_chs;i++)
                        chs[i]=new tree;
                inited=1;
        }
};


str - указатель на строку
chs - указатели на потомков
count_chs - количество потомков
inited - переменная признак: инициализировано дерево или нет
Дерево строиться таким образом, что у корневой вершины 2 потомка. Затем у каждого потомка еще 4 потомка и т.д.
И собственно сам код, который у меня получился:

Код

int Insert(tree* t,char* str,int lvl)
{
        if(t->inited!= 1)
                t->init(lvl);
        if(t->str==NULL)
        {
                t->str=strdup(str);
                return 1;
        }
}
void main()
{
        int lvl=1;
        tree* t=new tree;
        char* str=new char[100];
        while(1)
        {
                gets(str);
                if(!strcmp(str,"!exit"))
                        break;
                Insert(t,str,lvl);
        }
}

 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0433 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.