- •Программирование очередей кольцевой обработки данных.
- •Организация очередей данных
- •Алгоритм кругового обслуживания
- •Программирование очереди с кольцевым буфером.
- •Void enqueue(qType); /*добавить элемент в хвост очереди*/ qType dequeue(void); /*извлечь элемент из головы очереди*/
- •Программирование кругового обслуживания
- •Контрольные задания
- •Рекомендуемая литература
Контрольные задания
1. Рассмотреть вариант задачи Иосифа, где пороговое значение счетчика шагов по кругу обслуживания не является постоянным, а изменяется случайным образом после удаления каждого элемента или является известной функцией его номера. 2. Изменить программу Joseph таким образом, чтобы вместо целочисленных номеров для обозначения элементов в круге обслуживания задачи Иосифа использовались буквы латинского алфавита. В этом случае исходный набор элементов может быть задан соответствующей строкой символов. 3. Модифицировать программу Joseph таким образом, чтобы для хранения элементов обслуживания применялась очередь с линейным фиксированным буфером минимально возможного размера. 4. Разработать класс очередь с файловым буфером (FileQueue), где для хранения элементов очереди используется регулярный файл, обслуживаемый операциями чтения-записи по 2-м файловым указателям (типа File*) или дескрипторам к контексте процесса, один из которых можно получить, если открыть файл по чтению, другой - в режиме добавления в конец файла. При разработке методов класса FileQueue рекомендуется использовать библиотечные функции ввода-вывода системы программирования С или соответствующие вызовы OSUNIX. 5. Разработать класс сдвиговой очереди (ShiftQueue), организация которой будет напоминать работу сдвигового регистра: после исключения головного элемента все остальные сдвигаются на 1 шаг в направлении головы очереди. 6. Рассмотреть возможность применения программных каналов OSUNIX для моделирования кругового обслуживания элементов в условиях задачи Иосифа.
Рекомендуемая литература
1. Д. Кнут. Искусство программирования для ЭВМ - т. 1, Основные алгоритмы, М., Мир, 1976. 2. Б. Мейер, К. Бодуэн. Методы программирования, т. 1, М., Мир, 1989. 3. Й.Лэнгсам, М.Огенстайн, А.Тененбаум. Структуры данных для персональных ЭВМ , М., Мир, 1989 4. П. Лукас. С++ под рукой, Киев, НИПФ "Диа-Софт", 1993. 5. Т. Чан. Системное программирование на С++ для UNIX-BHV, Киев, 1997.
6. http://www.interface.ru/home.asp?artId=5354 Использование шаблонов в C++