Очередь на Delphi - Курсовая работа

бесплатно 0
4.5 26
Понятие очереди как линейного списка данных, доступ к которому осуществляется по принципу "первый вошел, первый вышел". Способы реализации очереди: статический и динамический. Информационное содержание структуры Магазин. Руководство пользователя.


Аннотация к работе
Очередь представляет собой линейный список данных, доступ к которому осуществляется по принципу "первый вошел, первый вышел" (иногда сокращенно его называют методом доступа FIFO). Элемент, который был первым поставлен в очередь, будет первым получен из нее. Элемент, поставленный в очередь вторым, при поиске будет получен также вторым и т.д. Преимуществом данного способа является скорость работы с очередью, т.к. элементы очереди располагаются в памяти друг за другом.Разработать программу, реализующую алгоритм очереди (20 элементов). В качестве элемента очереди выбрать структуру, соответствующую индивидуальному варианту. Предусмотреть заполнение очереди из файла (подготовить файл на 20 элементов). очередь данные информационный Предусмотреть следующие операции: 1) Заполнение очереди a) вручную b) из файла (выбор файла, тек. папка, любая папка) 4) Вывод элементов, содержащихся в очереди a) на экран b) в файлСписок - последовательность однородных элементов (называемых узлами), каждый из которых содержит ссылку на следующий (и/или предыдущий) элемент. Список, в котором нет элементов, называется пустым списком. Список, в узлах которого, задается адрес только одного (предыдущего или последующего) элемента, называются однонаправленным (односвязным). Список, в узлах которого, задаются адреса и предыдущего и последующего элементов, называются двунаправленным (двусвязным). Линейным списком называется последовательность однородных элементов (называемых узлами), каждый из которых (кромепоследнего)содержит ссылку на следующий (и/или предыдущий) элемент.Для реализации очереди надо объявить массив и две переменные - указатель начала очереди first и указатель конца очереди last. Тогда пустую очередь определим как first = last = 0 (индексация элементов массива начинается с 0), и при каждом добавлении нового элемента переменная last увеличивается на 1, а при удалении на 1 увеличивается указатель first. Для устранения этого недостатка можно сдвигать все элементы влево к началу массива, что при большом числе элементов в очереди может привести к большим вычислительным затратам. Название функции Описание procedure INITQUEUE(var que: TQUEUE); инициализация (очистка) очереди function ISEMPTY(que: TQUEUE) : Boolean; очередь пуста? procedure ENQUEUE(var que: TQUEUE; new_mag: TMAGAZINE_Rec); добавление элемента в хвост очереди function DEQUEUE(var que: TQUEUE): TMAGAZINE_Rec; удаление элемента из головы очереди procedure REMOVEQUEUETOTOP(var que: TQUEUE); сдвиг всех элементов очереди влево к нулевому индексу массива function PRINTQUEUE(que: TQUEUE): string; печать очереди function Top(que: TQUEUE): TMAGAZINE_Rec; прочитать элемент очереди с головы Сама очередь объявляется следующим образом: // тип ОчередьПриведенная ниже схема элементов очереди отражает логический порядок следования элементов, физически же элементы могут находиться в любых свободных областях памяти. // переменные для работы с очередью que : TQUEUE; // очередь mag : TMAGAZINE; // магазин и вызовем функцию инициализации очереди в которой обнулим указатели и счетчик количества элементов: procedure INITQUEUE(var que: TQUEUE); Пустоту очереди будем проверять равенством количества элементов // очередь пуста? function ISEMPTY(que: TQUEUE): Boolean; А заполненность очереди будем проверять равенством количества элементов максимально разрешенному количеству: // очередь заполнена? function ISFULL(que: TQUEUE): Boolean; Функция добавления элемента в конец очереди принимает два аргумента: ссылку на очередь и добавляемые данные.end else if (EDTMAG_Name.Text = "") then begin Rewrite(File_Zap); // Создаем файл for i := que.first to que.last do begin // читаем пока не конец файла и колво не больше размера очереди while (not eof(File_Zap)) and (num_zap <= QUE_SIZE) do begin num_zap := num_zap 1; // увеличим счетчик считываемой записи begin if que.last >= QUE_SIZE then // очередь заполнена? begin raise EINVALIDOPERATION.Create("Очередь заполнена."); begin if not ISEMPTY(que) then // если очередь не пуста if que.first > 1 then // если очередь не в начале массива begin kol_el := que.last - que.

План
СОДЕРЖАНИЕ

Введение

1. ПРАКТИЧЕСКИЙ РАЗДЕЛ

1.1 Постановка задачи. Информационное содержание структуры Магазин

1.2 Описание программы

1.2.1 Основные теоретические сведения.

1.2.2 Статическая реализация очереди

1.2.3 Динамическая реализация очереди

1.3 Руководство пользователя

Выводы (заключение)

Список использованных источников

Приложение (тексты программ)

Скриншоты программы

Введение
Очередь представляет собой линейный список данных, доступ к которому осуществляется по принципу "первый вошел, первый вышел" (иногда сокращенно его называют методом доступа FIFO). Элемент, который был первым поставлен в очередь, будет первым получен из нее. Элемент, поставленный в очередь вторым, при поиске будет получен также вторым и т.д. Существует два способа реализации очереди - статический и динамический. При статической реализации элементы очереди хранятся в обычном массиве. Память под массив выделяется сразу и не изменяется по мере заполнения очереди. Преимуществом данного способа является скорость работы с очередью, т.к. элементы очереди располагаются в памяти друг за другом. Недостатком является возможность переполнения очереди при слишком большом количестве добавленных элементов. При динамической реализации каждый элемент очереди состоит из двух частей - информационной части и указателя на следующий элемент очереди. При таком способе реализации элементы располагаются в памяти произвольным образом. Преимуществом данного способа является то, что размеры очереди ограничены лишь размерами памяти и пустые элементы не хранятся в очереди, а освобождаются из памяти. Недостатком является медленная скорость работы с элементами при большом их количестве.

1.

Список литературы
1. Ахо, Альфред, В., Хопкрофт, Джон, Ульман, Джеффри, Д. Структуры данных и алгоритмы. - М. : Издательский дом "Вильяме", 2000

2. Стивенс Р. Delphi. Готовые алгоритмы. Питер, 2004

3. Окулов С. Программирование в алгоритмах. БИНОМ. Лаб. Знаний, 2004

4. Бакнелл Дж. Фундаментальные алгоритмы и структуры данных в Delphi. Diasoft. 2003

5. Кэнту М. Delphi 7 для профессионалов. Питер. 2004

6. Павловская Т.А. Паскаль. Программирование на языке высокого уровня. Питер. 2007
Заказать написание новой работы



Дисциплины научных работ



Хотите, перезвоним вам?