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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Двоичное дерево, лаба по динамическим структурам 
:(
    Опции темы
Гость_Fred
  Дата 31.5.2005, 20:33 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ребята помогите кто-нибудь реализовать двоичное дерево
вот само условие
"На междугородной телефонной станции картотека абонентов, содержащая сведения о телефонах и их владельцах, организована как двоичное дерево.
Составить программу, которая:
• обеспечивает начальное формирование картотеки в виде двоичного дерева;
• производит вывод всей картотеки;
• вводит номер телефона и время разговора;
• выводит извещение на оплату телефонного разговора.
Программа должна обеспечивать диалог с помощью меню и контроль ошибок при вводе."
Горю выручайте ... smile
  Вверх
bel_nikita
Дата 31.5.2005, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

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



STL пойдет?


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
Дрон
Дата 31.5.2005, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

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



Во первых из условия не понятно, что именно должно служить основой формирования дерева. Фамилии абонентов или номера телефонов? Дальше непонятно откуда берётся информация о времени разговора?

Цитата(bel_nikita @ 1.6.2005, 00:24)
STL пойдет?

А смысл? Взять и всё запихнуть в map это очень соблазнительно, но у него это лаба по программированию smile
Я бы её рублей в 500 оценил smile

Это сообщение отредактировал(а) Дрон - 31.5.2005, 23:35


--------------------
Да. Именно так.
PM   Вверх
Guest
Дата 1.6.2005, 23:35 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А как вообще строится двоичное дерево?
Или можно это программу реализовать в виде списков (односвязанных,двухсвязанных)?
Мне нужна просто сама реализация а уж до остального как нибудь сам допетрюсь, с динамикой у меня туган ....
  Вверх
Дрон
Дата 2.6.2005, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

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



Ну если, например, строить дерево по фамилиям, то принцип такой:

Берём первую фамилию. Записываем в корень дерва.
Берём следующую. Сравниваем с первой. Если меньше, то записываем в левую ветвь, если больше, то в правую (меньше или больше это можно определить функцией strcmp).
Дальше сравниваем третью фамилию с корнем. Пусть она тоже меньше, как и вторая. Тогда переходим в левую ветвь и сравниваем со второй. Если она меньше второй, то пишем в левую ветвь второй, иначе в правую второй.
И т.д.

Примерно так:

Код

class TreeNode
{
     char *name;
     TreeNode *left,*right;
public:
     TreeNode(const char* str) { left=right=NULL; name=strcpy(str); }
     void Add(const char* str);
};

void TreeNode::Add(const char* str)
{
      int p = strcmp(str,name);
      if(p>0)
      {
            if(right == NULL) 
                  right = new TreeNode(str);
            else
                  right->Add(str);
      }
      else if (p<0)
      {
            if(left == NULL) 
                  left = new TreeNode(str);
            else
                  left->Add(str);
      }
      else if (p == 0)
      {
              // два одинаковых имени -- по идее это ошибка
      }
}


Обязательно надо написать деструктор, чтобы освободить память от строк и удалить дерево.
Да и вообще код не проверял smile


--------------------
Да. Именно так.
PM   Вверх
Fredy
Дата 2.6.2005, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо!! Дрон попробую разобраться!!! Если что обращусь за помощью!!
PM MAIL   Вверх
Знак
Дата 2.6.2005, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ха так этож двоичное дерево Хофмана..!

Знаю знаю!

тебе надо сжать информацию? для тичера?


Вот почитайка

http://algolist.manual.ru/compress/standard/huffman.php

smile

Крутая тема и тичер будет доволен!!
--------------------
Ищу 2 файлаowl.tchwindows.tch 
PM MAIL   Вверх
Void
Дата 2.6.2005, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

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



Цитата
Ха так этож двоичное дерево Хофмана..!

Нет.
Цитата
тичер будет доволен!!

Едва ли.



--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
___Yuri
Дата 2.6.2005, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 2.3.2005
Где: МО

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



Дрон, а может выть проще и эффективнее было сделать AVL дерево?
Или что нубудь типа Б - дерева - если записей уж очень много(как по идее и должно быть)?
PM MAIL ICQ   Вверх
Void
Дата 3.6.2005, 05:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

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



Цитата(___Yuri @ 2.6.2005, 21:57)
может выть проще и эффективнее было сделать AVL дерево?

Эффективнее - конечно, а вот насчет проще - вряд ли smile
К тому же, в задании явно указано бинарное дерево.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Знак
Дата 3.6.2005, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



чем различны Бинарное и двоичное деревА smile ?
--------------------
Ищу 2 файлаowl.tchwindows.tch 
PM MAIL   Вверх
borisvolfson
Дата 3.6.2005, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Бинарное и двоичное дерево - это одна и таже структура данных.
Что касается, AVL-деревьев - это тоже бинарные деревья со своийствами сбалансированности, в них можно осуществлять быстрый поиск и вставку.
PM MAIL   Вверх
Void
Дата 3.6.2005, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

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



Цитата(borisvolfson @ 3.6.2005, 19:16)
Что касается, AVL-деревьев - это тоже бинарные деревья со своийствами сбалансированности, в них можно осуществлять быстрый поиск и вставку.

Я знаю. Вторая фраза относилась уже к B-деревьям - недоквотил.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Знак
Дата 4.6.2005, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А кто моге ссылку на описание подкинуть ?

по AVL - деревьям... smile

тока точную а то я задиплюсь в инете smile
--------------------
Ищу 2 файлаowl.tchwindows.tch 
PM MAIL   Вверх
Alastis
Дата 4.6.2005, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 15.11.2004
Где: Казахстан, Астана

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



1
2


--------------------
Прости, что я говорю, когда ты меня перебиваешь.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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