
- •Глава 1. Структурное программирование
- •1.1 Основные определения
- •1.2 Три основных действия
- •1.2.1 Последовательность
- •1.2.2 Выбор
- •1.2.3 Цикл
- •1.3. Структурный подход к решению задач
- •Задание
- •1.4. Организация хранения и обработки данных
- •1.4.1 Записи и списки
- •Задание
- •1.4.2 Очередь
- •Задание
- •1.4.3 Стек
- •Задание
- •Структурное программирование. Объектно-ориентированное программирование. Визуальное программирование.
- •ВВедение в язык программирования Краткая история эвм и языки программирования
- •Интегрированная среда borland pascal Краткая характеристика
- •Запуск программы
- •Открытие нового окна
- •Завершение работы со средой
- •Структура программы
- •Понятие идентификатора
- •Процедуры ввода и вывода данных
- •Переменные строкового типа
- •Переменные целого типа
- •Три программы (сумма, разность, произведение) Переменные вещественного типа (Операция деления)
- •Операторы выбора
- •Булевские (логические) операции
- •Одномерный массив
- •Двумерный массив Трехмерный массив описание массива
- •Нахождение максимального элемента в массиве
- •Строковая переменная как массив
- •Работа с файлами Виды файлов (типизированный и не типизированный) Запись данных в файл
- •Считывание данных из одномерного массива
- •Считывание данных из двумерного массива
Задание
Приведите пример списков.
Приведите примеры односвязных списков
Приведите пример двусвязных списков.
Изобразите графически двусвязный список
Изобразите графически кольцевой список.
1.4.2 Очередь
В предыдущем параграфе Вы познакомились с понятием список и линейный список. Говоря о свойствах линейного списка, мы отмечали, что обычно, для линейного списка разрешается добавлять запись (элемент) между любыми двумя другими, и удалять любую запись (элемент). Однако это не всегда так. Существуют списки в которых добавление новой записи (элемента), а также его удаление подчиняется определенным правилам.
Представьте себе, что Вы решили приобрести билет на концерт популярной группы. Вы идете в место продажи билетов, а там уже присутствуют такие же желающие приобрести билеты. Вам ничего не остается, как ждать пока пришедшие раньше Вас не приобретут билеты, но если кто-то пришел после Вас, он должен дождаться пока не приобретете билеты Вы. Здесь мы имеем дело с принципом: «Первый пришел, первым ушел!» или на английском языке «First input, First output» . Обычно его называют принципом FIFO
Очередь – частный случай линейного списка, для которого разрешены только два действия: добавления элемента в конец списка (хвост) и удаление элемента из начала (головы) списка.
Начало очереди |
|
|
|
|
|
|
|
|
|
Конец очереди |
|
|
|
|
|
|
|
|
|
|
|
Рис
При удалении элемента из начала очереди длина очереди уменьшается на единицу, а все последующие элементы сдвигаются к началу, то есть второй элемент становится первым, третий –вторым и так далее. Чем больше элементов находилось в очереди, тем больше действий по перемещению элементов необходимо произвести.
Если количество действий зависит от количества элементов, то такие действия называются массовыми.
Рассмотрим основные действия над очередью. Для того, чтобы посмотреть какие действия мы можем проводить с данными, которые организованны в очередь, введем несколько определений.
Максимальная длина очереди – Максимальное количество элементов которое может одновременно находиться в очереди.
Длина очереди - характеризует количество элементов находящихся в очереди в данный конкретный момент времени.
Пустая очередь - Очередь в которой нет ни одного элемента (длина очереди равна нулю).
Первое действие "Поместить элемент в очередь":
Для того чтобы поместить элемент в очередь необходимо проверить если в ней место, то есть меньше ли длина очереди максимальной длины. Если длина меньше максимальной длины, то помещаем элемент в конец очереди и увеличиваем значение длины очереди на единицу, иначе ничего не делаем (если длина очереди равна максимальной длине, то поместить в очередь новый элемент не представляется возможным).
Второе действие "Взять элемент из очереди":
Для того, что бы взять элемент из очереди необходимо проверить есть ли элементы в очереди. Если очередь не пуста, то: удаляем первый по порядку элемент; сдвигаем оставшиеся элементы к началу очереди; уменьшаем на единицу значение длины очереди, иначе ничего не делаем.