Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2017, 19:37   #1
Aoizora
Заблокирован
 
Регистрация: 11.11.2016
Сообщений: 261
По умолчанию Проверка существует ли узел с данным IP в дереве упорядоченном по времени

Я храню IP-адреса узлов в бинарном дереве, упорядоченном по времени подключения узла. Мне нужно написать процедуру проверки, существует ли в этом дереве узел с данным IP. Так как дерево упорядочено по времени, стандартный бинарный поиск тут не поможет. Как выйти из положения? Менять структуру данных и делать что-то вроде декартова дерева?
Aoizora вне форума Ответить с цитированием
Старый 31.01.2017, 19:56   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Сортировать по IP адресам.
Если нужен поиск по времени, тогда создайте две коллекции - по времени и по адресам.
waleri вне форума Ответить с цитированием
Старый 31.01.2017, 20:03   #3
Aoizora
Заблокирован
 
Регистрация: 11.11.2016
Сообщений: 261
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Сортировать по IP адресам.
Если нужен поиск по времени, тогда создайте две коллекции - по времени и по адресам.
Тогда возникнет проблема в синхронизации двух коллекций. Мне нужно поддерживать актуальность узлов в таблице, для этого я буду удалять самые старые узлы и запрашивать первые 10 узлов у другим клиентов.
Aoizora вне форума Ответить с цитированием
Старый 31.01.2017, 20:23   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
узлов в бинарном дереве,
стало быть есть ссылки на родителя/потомка для упорядочивания по временам.
почему не сделать еще и ссылки по имени(IP-адресу).
участие узла в двух деревьях с разной упорядоченностью (время и имя).
Цитата:
тогда создайте две коллекции - по времени и по адресам.
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Старый 31.01.2017, 20:26   #5
Aoizora
Заблокирован
 
Регистрация: 11.11.2016
Сообщений: 261
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
почему не сделать еще и ссылки по имени(IP-адресу).
То есть в дереве, упорядоченном по времени, образуются дополнительные связи, при помощи которых дерево упорядочивается по IP? Как реализуется вставка и удаление в таком случае?
Aoizora вне форума Ответить с цитированием
Старый 31.01.2017, 20:36   #6
Aoizora
Заблокирован
 
Регистрация: 11.11.2016
Сообщений: 261
По умолчанию

А может, сделать индекс как в базах данных? Какие эффективные алгоритмы для этого существуют?
Aoizora вне форума Ответить с цитированием
Старый 31.01.2017, 23:42   #7
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Тогда возникнет проблема в синхронизации двух коллекций
И в чем проблема? Добавляете/удаляете в обе коллекции. Чтоб не дублировать данные используйте указатели.
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить узел в бинарном дереве Вероника99 Помощь студентам 6 23.06.2016 14:27
Проверка элементов в дереве. Язык Си iamhated Помощь студентам 0 04.04.2013 13:07
Система управления доступом к данным, по времени (вероятно C#.NET) Malisar Помощь студентам 0 05.03.2013 18:41
Нужно написать функцию, которая проверяет содержатся ли элементы из первого дерева во втором дереве, в указанном в 1 дереве порядк Laurensii Помощь студентам 2 24.12.2012 02:55