www.samag.ru
Журнал «БИТ. Бизнес&Информационные технологии»      
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Интеграция Open Source-решений  

Open Source в облачной среде

Облачные решения становятся всё более популярными в мире. Компании стремятся использовать их для

 Читать далее...

Автоматизация  

Нейросеть вам в руки! Как использовать ИИ для автоматизации задач

Использование ИИ для автоматизации задач помогает компании получить конкурентное преимущество, поскольку объединение

 Читать далее...

Рынок труда  

Специалист по этическому ИИ, инженер по квантовым вычислениям или аналитик по метавселенной?

Новые тенденции в развитии ИТ могут привести к возникновению новых специальностей в

 Читать далее...

Книжная полка  

Учитесь убеждать и побеждать

Издательство «БХВ», как всегда, порадовало своих читателей хорошими книжными новинками. Кроме популярных

 Читать далее...

Сетевая инфраструктура  

Как удаленная работа меняет подход к сетевой инфраструктуре?

С увеличением числа сотрудников, работающих из дома, организации сталкиваются с необходимостью создания

 Читать далее...

Мониторинг  

Какой мониторинг нужен сегодня?

По мнению экспертов ГК InfoWatch, действия сотрудников – самая распространенная причина инцидентов

 Читать далее...

Книжная полка  

Руководство для тех, кто увлечен ИИ, программированием. И дизайном

Накануне лета издательство «БХВ» выпустило книжные новинки, от которых любителям чтения будет

 Читать далее...

Мобильные приложения  

Искусственный интеллект в мобильных приложениях: возможности и перспективы

Обзор современных применений ИИ в мобильных приложениях, анализ перспектив развития этой технологии,

 Читать далее...

ИТ-образование  

Как сделать ИТ-образование эффективным?

Эксперты ИТ-отрасли отвечают на вопросы «СА». Обсуждаем ключевые аспекты для улучшения образовательных

 Читать далее...

Work-life balance  

Как айтишнику найти баланс между работой и личной жизнью?

Обсуждаем инструменты для эффективного управления временем, снижения уровня стресса и достижения гармонии. На

 Читать далее...

Книжная полка  

Всё самое нужное – под одной обложкой

Отличительная черта книжных новинок, выпущенных недавно издательством «БХВ» – это их универсальность. Не просто

 Читать далее...

ИТ-инфраструктура  

Системы мониторинга ИТ-инфраструктуры-2025

Без мониторинга ИТ-инфраструктуры не обходится ни одна компания, хотя бы потому, что

 Читать далее...

Открытое ПО  

Безопасность Open Source: рискуем или контролируем?

Компания «Кросс технолоджис» изучила, как используется ПО с открытым кодом в компаниях

 Читать далее...

Работа с нейросетью  

Скажи, есть ли у тебя AI, и я скажу, кто ты

Недавно сервис по поиску работы SuperJob выяснил, что каждый второй россиянин уже

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 9787
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 9938
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 7374
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 4597
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 5407
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 5394
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 8101
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 4762
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 4993
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 9063
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 12510
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 14019
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 15780
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 10653
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 8671
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 6900
Комментарии: 4
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 6029
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 4951
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 4596
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 4829
Комментарии: 1
Рецензия на книгу «MongoDB в действии»

 Читать далее...

Друзья сайта  

 Очереди как структуры данных. Теория и практика

Архив номеров / 2014 / Выпуск №5 (138) / Очереди как структуры данных. Теория и практика

Рубрика: Разработка /  Проектирование

Александр Календарев АЛЕКСАНДР КАЛЕНДАРЕВ, РБК Медиа, программист, akalend@mail.ru

Очереди как структуры данных
Теория и практика

В проектах, где предполагается распределенная обработка или параллельные вычисления, присутствуют очереди, включая операционные системы. В данной статье рассмотрены различные аспекты применения очередей

Очередь – это структура данных, которая соответствует принципу: первый пришел – первый вышел, элементы кладутся в конец очереди, а извлекаются из ее начала. Первым из очереди будет извлечен тот элемент, который будет добавлен раньше других.

В англоязычной литературе для обозначения очередей довольно часто используется аббревиатура FIFO (First-In-First-Out – первым вошел – первым вышел).

Основные операции, которые можно осуществить с элементами очереди:

  • чтение из очереди;
  • запись в очередь;
  • удаление из очереди;
  • обработка, итерация по элементам очереди.

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

Рисунок 1. Реализация очереди с помощью массива

Рисунок 1. Реализация очереди с помощью массива

Реализация очереди с помощью массива. Если мы извлекаем из очереди элемент массива, то по идее мы должны сдвигать все элементы, что очень накладно, если ожидается большой поток. Но существует и другой подход, так называемый кольцевой алгоритм.

Чтобы не сдвигать все элементы очереди, в отдельном поле Pbeg будем хранить индекс элемента массива, с которого начинается очередь, и Pend – индекс конца очереди. Как только один из указателей достигает границы массива, например, Pmax, то он сразу сбрасывается в ноль (P0). Добавление элементов происходит в конец очереди – Pend, а изъятие из начала очереди – Pbeg. Можно и наоборот – это не принципиально. Такой подход имеет один недостаток – фиксированный размер очереди, который не может превышать размерность массива, – Pmax.

Рисунок 2. Реализация очереди с помощью двух направленных списков

Рисунок 2. Реализация очереди с помощью двух направленных списков

В отличие от классического списка реализация очереди предполагает наличие двух указателей: один на начало очереди – Pbeg, второй на ее конец – Pend. В списках указатели на первый и последний элемент очереди принято называть «голова» (head) и «хвост» (tail). Вставляя элемент в очередь, мы его вставляем перед первым элементом, на который указывает указатель Pbeg, а впоследствии присваиваем указателю адрес этого элемента, таким образом, он становится первым. Извлечение из очереди, напротив, возвращает указатель на последний элемент – Pend, а сам указатель передвигаем на предыдущий. Чтобы это у нас работало, нам нужно использовать двунаправленный список.

Статью целиком читайте в журнале «Системный администратор», №5 за 2014 г. на страницах 49-53.


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru