Другие языки программирования и технологии

Даже незнаю как сформулировать вопрос =) ДВусвязный Списки!!!! Или вопрос для ПРОшаренных математиков

У меня такая задача -
Есть таймер в милисекундах и запланированные события/действия в определеное время
Нужно гдето хранить эти события причем планироватся будет много, на разное время, и на единицу времени может быть сразу несколько событий, будут промежутки (не на каждую единицу времени будут события)

Я непридумал нечего лучше чем использовать Двухсвязный список для представления времени таймера и уже в нутри него массив с запланироваными событиями на данную еденицу времени
(элементы буду добовлять в хронологическом порядке)

так как список будет большой, чтобы быстрее по нему орентироваться решил добавит еще одну пару сылок на "соседий" , только не на ближайших а на тех что на 10 позиций левее и 10 правее

Вопрос имеет ли это смысл? ? может есть чтонить более подходящее для моей задачи .

А если использовать Этот метод то как расчитать ОПтимальный "ШАГ" для второй пары ссылок ???ну тоесть если у меня список примерно этак на элементов 5000-10000 возможно имеет смысл исползлвать Шаг не в 10 а в 30 или 50. это сделает запись нового элемента более долгой (так как при вставке нового элемента в середину нужно поменять сылки соседних 10 елементов слева и справа) но зато это позволит намного быстрее пробежаться по списку чтобы найти нужный "промежуток времени" куда поставит новое событие

Это походу скорее вопрос по Математике,
Вобщем подскажите как расчитать оптимальный шаг.
Желательно на пальцах (я с матиматикой не в ладах, да и програмировантие пока тоже несильно освоил )
Признаюсь честно, вы так описали ТЗ, что я его смысла в целом вообще не понял.
Но двусвязный список - это не самое удобное место, для хранения чего либо, из-за того, что приходится постоянно просматривать весь список. Лично я бы на вашем месте использовал динамический массив, если число элементов заранее неизвестно или оно постоянно увеличивается. Если записываемая информация представляет собой разнородные данные, то нужно просто создать динамический массив структур. Вы получите возможность обращаться напрямую в нужному элементу. Ну а для ускорения поиска, сортировки, выборки и тому подобного, вам нужно просто использовать стандартные фишки из курса структуры алгоритмов обработки данных. В любой книги с трюками программирования они есть!
A-
Azeke -_-_-_-_-_
5 422
Лучший ответ
Текста много, а суть задачи полностью так и не раскрыта.
Если по условию длительность событий равна 0, то новое событие просто вставляется между двумя соседними.
Иначе такой список помимо момента начала выполнения события, должен содержать в себе длительность каждого события. Если есть длительность, то нужно проверять события на перекрытие по времени выполнения и искать в списке для него место. Поиск нужно начинать от ближайшего подходящего по времени события и далее к концу списка. Если такого места нет, то вставлять новое событие в конец списка или просто заносить уже в новый список на очередной цикл обработки. Если же допускается вставка нового события со сдвигом перекрываемых событий, то время начала выполнения перекрываемого события будет определяться моментом окончания нового события и т. д. При этом нужно будет пересчитать время их начала с учетом сдвига.

PS Я так и не понял зачем тут нужны двусвязные списки?
используй лучше stl
Игорь Дребот
Игорь Дребот
1 434