Структуры данных – очереди. Программная реализация операций с очередями

Классификация структур данных. Определение понятия очередь и ее виды: двухсторонняя и с приоритетом. Реализация очереди на базе массива и их основные операции. Особенности программной реализации операций со стеками. Интерфейс программы и ее функции.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 17.03.2014
Размер файла 1,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ Российской Федерации

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«ТЮМЕНСКИЙ государственный НЕФТЕГАЗОВЫЙ университет»

Институт Менеджмента и бизнеса

Кафедра «Математические методы в экономике»

Курсовая работа

по дисциплине «Программирование»

на тему: «Структуры данных - очереди. Программная реализация операций с очередями»

Выполнил:

студент I курса гр. БИб-12-1

Топчиев В.Д.

Проверил:

ст. преподаватель

Наурусова Г.А.

Тюмень 2012

Содержание

Введение

Глава 1. Классификация структур данных

1.1 Очередь

1.2 Двухсторонняя очередь

1.3 Очередь с приоритетом

1.4 Реализация очереди на базе массива

1.5 Основные операции с очередями

Глава 2. Программная реализация операций со стеками

2.1 Интерфейс программы

2.2 Функции программы

Заключение

Список использованной литературы

Приложение. Листинг программы

Введение

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

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

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

Объектом исследования в курсовой работе является динамическаяструктура данных и один из её типов - очереди.

Предметом исследования в курсовой работе является программная реализация операций с очередями.

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

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

1. На основе анализа структуры данных очереди и её типов выявить основные операции, используемые при их применении и основные направления области информационно-технических систем;

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

Глава 1. Классификация структур данных

Классификация структур данных может быть выполнена по различным признакам:

1) По сложности: простые и интегрированные.

o Простые (базовые, примитивные) структуры - это такие, которые не могут быть распределены на составные части.

o Структурированные (интегрированные, композитные, сложные) - такие структуры данных, составными частями которых есть другие структуры данных - простые или, в свою очередь, интегрированные. Интегрированные структуры данных конструируются программистом.

2) По способу представления: физические и логические.

o Физическая структура данных - это способ физического представления данных в памяти компьютера.

o Логическая или абстрактная структура - это рассмотрение структуры данных без учета его представления в машинной памяти.

3) По наличию связей между элементами данных: несвязные и связные.

o Несвязные структуры характеризуются отсутствием связей между элементами структуры ( векторы, массивы, строки, стеки )

o Связные структуры характеризуются наличием связи (связные списки)

4) По изменчивости: статические, полустатические, динамические. Изменчивость, то есть изменение числа элементов и (ли) связей между элементами структуры.

o Статические - массивы, множества, записи, таблицы.

o Полустатические - это стеки, очереди, деки, дерева.

o Динамические - линейные и разветвленные связные списки, графы, дерева.

5) По характеру упорядоченности элементов в структуре: линейные и нелинейные.

o Линейные структуры в зависимости от характера взаимного расположения элементов в памяти разделяют на структуры с последовательным распределением элементов в памяти (векторы, строки, массивы, стеки, очереди) и структуры с произвольным связным распределением элементов в памяти (односвязные и двусвязные линейные списки).

o Нелинейные структуры - многосвязные списки, дерева, графы.

6) По виду памяти, используемой для сохранности данных: структуры данных для оперативной и для внешней памяти.

o Структуры данных для оперативной памяти - это данные, размещенные в статической и динамической памяти компьютера.

o Структуры данных для внешней памяти называют файловыми структурами или файлами.

1.1 Очередь

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

Очередь - такой последовательный список с переменной длинной, включение элементов в который происходит с одной стороны, а исключение элементов - с другой стороны списка.Очередь иногда называют циклической памятью или списком типа FIFO («first-in-first-out» - «первым включается - первым исключается»).

Очередь - тип данных, при котором новые данные располагаются следом за существующими в порядке поступления; поступившие первыми данные при этом обрабатываются первыми.

Та сторона очереди, с которой осуществляется добавление элементов, называется хвостом, или концом очереди, другая - головой. Для индикации хвоста и головы организуются два указателя. Очередь можно представить в виде звеньев, каждая из которых состоит из двух полей: первое - поле элемента, второе - поле ссылки на следующий элемент очереди.

1.2 Двухсторонняя очередь

Разновидностью очередей является двухсторонняя очередь или дек. Она отличается от обычной очереди тем, что добавление и удаление данных допустимо с обоих концов очереди. Для реализации алгоритмов работы с двухсторонней очередью можно использовать те же структуры, что и для обычной очереди (Data (данные) и Queue (очередь)), необходимо только дополнить основные операции.

Для работы с деком необходимы следующие действия: добавление в начало и конец очереди (последнюю можно взять из примеров для обычной очереди), удаление из начала очереди (берем как для обычной очереди) и с конца очереди.

1.3 Очередь с приоритетом

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

Для представления данных можно использовать те же структуры, что и для обычной очереди, добавление в конец очереди будет таким же, а вот извлечение из очереди требует основательной переделки. При каждом извлечении вначале надо поискать в очереди «вне очередников» (есть такой -- его и извлекаем, на этом очередной запрос исчерпан) и только потом работать с остальными в обычном режиме.

Очереди имеют большое значение в информатике; они применяются к двум классам задач:

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

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

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

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

Очереди можно подразделить на две группы: статистические и динамические.

· Статистические очереди представляют собой структуры ограниченной длины (т.е. с фиксированным числом элементов, которые могут одновременно находиться в ней). Как правило, подобные очереди располагаются в памяти как непрерывная последовательность байтов. Простейший пример статистической очереди - одномерный массив.

· Динамические очереди фиксированной длины не имеют. Эти очереди могут содержать больший объём данных и позволяют более экономно расходовать оперативную память. Примером структуры такого типа может служить очередь, используемая для обработки событий. Объекты получают данные (события) для обработки из динамической очереди, в которую они поступают по мере появления. Такая структура позволяет буферизировать до обработки практически любое (в пределах размера динамической памяти) количество событий и более экономно расходовать память.

Для работы с очередью реализуются следующие процедуры:

Init(Q) - процедура создания очереди Q.

Empty(Q) - логическая функция, если очередь пуста Empty

выдает значение true, если нет - false.

Pop(Q) - процедура, выталкивающая первый элемент очереди Q.

Top(Q) - функция, выдающая значение первого элемента очереди.

Push(Q,v) - процедура, добавляющая новый элемент v типа Qel

в конец очереди Q.

Print(Q) - процедура, распечатывающая содержимое очереди.

Size(Q) - функция, выдающая число компонент (длину) очереди.

Операции над очередью с переменными First и Last.

- добавление одного элемента в конец очереди;

- проверка, определяющая: является ли очередь пустой;

- извлечение одного элемента из начала очереди.

Алгоритм добавления одного элемента в очередь:

- увеличить значение Last;

- добавить один элемент.

Алгоритм извлечения одного элемента из очереди:

- увеличить значение First;

- извлечь один элемент.

Реализация очереди на основе линейного списка.

Описание типа переменных для реализации очереди: пользуемся рекурсивным описанием полей:

Type typeelem=Integer; типэлементаочереди

connect=^data; рекурсивное определение указателя

data=Record

elem:typeelem; тип информационной ячейки

next:connect тип указателя

End;

1.4 Реализация очереди на базе массива

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

При непрерывной реализации очереди в качестве базы выступает массив фиксированной длины N, таким образом, очередь ограничена и не может содержать более N элементов. Индексы элементов массива изменяются в пределах от 0 до N - 1. Кроме массива, реализация очереди хранит три простые переменные: индекс начала очереди, индекс конца очереди, число элементов очереди. Элементы очереди содержатся в отрезке массива от индекса начала до индекса конца.

При добавлении нового элемента в конец очереди индекс конца сперва увеличивается на единицу, затем новый элемент записывается в ячейку массива с этим индексом. Аналогично, при извлечении элемента из начала очереди содержимое ячейки массива с индексом начала очереди запоминается в качестве результата операции, затем индекс начала очереди увеличивается на единицу. Как индекс начала очереди, так и индекс конца при работе двигаются слева направо. Что происходит, когда индекс конца очереди достигает конца массива, т.е. N - 1?

Ключевая идея реализации очереди состоит в том, что массив мысленно как бы зацикливается в кольцо. Считается, что за последним элементом массива следует его первый элемент (напомним, что последний элемент имеет индекс N - 1, а первый -- индекс 0). При сдвиге индекса конца очереди вправо в случае, когда он указывает на последний элемент массива, он переходит на первый элемент. Таким образом, непрерывный отрезок массива, занимаемый элементами очереди, может переходить через конец массива на его начало.

1.5 Основные операции с очередями

Включение элемента и исключение элемента. При включении новый элемент заносится в ячейку, следующую за указателем P2. При исключении из очереди извлекается элемент, адресуемый указателем P1, после чего P1 перемещается к следующему элементу.

При моделировании простейшей линейной очереди на основе вектора выделяется последовательность m мест длиной l ,каждое под элементы очереди. При включении элемента в очередь он располагается в соответствии с указателем PIN, после чего этот указатель перемещается на следующее "пустое" место (в простейшем случае увеличиваясь на 1 или l). В процессе исключения из очереди извлекается элемент, адресуемый посредством указателя POUT (если POUT<>PIN, что характеризует непустую очередь), а указатель также увеличивается на 1 или l. Текущая длина очереди K равна (PIN-POUT)/l, а при очистке очереди (в ее исходном состоянии) устанавливается PIN = Q1, POUT = Q1.Независимо от состояния POUT в момент попытки включения элемента при PIN = Qm+l наступает переполнение линейной очереди. Чтобы устранить этот недостаток, после каждого чтения из очереди или, эффективнее, в момент PIN = Qm+l производят "сдвиг" всех наличных элементов очереди к ее голове с соответствующей коррекцией указателей. В этой ситуации переполнение возникает только при попытке включения элемента в очередь, где все m мест уже заполнены. Такое решение проблемы, однако, невыгодно из-за временных затрат на последовательные сдвиги элементов.

Более эффективна организация кольцевой очереди , в которой при попытке включения элемента в очередь, когда PIN = Qm+l, производится коррекция

PIN := Q1, если POUT > Q1.

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

Для добавления второго элемента необходимо использовать свободное место в начале очереди. При этом выполняется соединение первого и последнего элементов массива. В этом случае следующим после крайнего слева элемента массива становится первый справа элемент массива. Если k - индекс элемента массива, а N - количество элементов в массиве, то индекс следующего за ним можно определить по формуле

Следующий = (k+1) остаток от деления на N.

Таким образом, при добавлении нового элемента индекс элемента массива, куда необходимо произвести запись, определяется из приведенной формулы. Аналогичным способом производится и извлечение элемента из очереди. При этом новое значение переменной First определяется по той же самой формуле.

Добавление элемента в начало очереди

Для добавления элемента в начало очереди используется метод класса add. Его параметрами является добавляемый элемент b. Необходимо создать новый элемент структуры Node (el). Элементу el присваивается значение введенного с клавиатуры числа. Для добавления элемента в начало очереди, необходимо, чтобы ячейка была пуста. Поэтому, проверяется условие наличия в ячейке элемента. Если ячейка не пуста, то указатель на первый элемент переходит на следующую ячейку, в которую и будет записан элемент. Количество ячеек возрастает на 1.

Удаление элемента из начала очереди

Для удаления элемента из начала очереди используется метод класса delete. Удаление элемента происходит по тому же алгоритму, но ячейка не проверяется на наличие элемента в нем. Элементу el присваивается указатель first и указатель переходит в следующую ячейку. Затем элемент elудаляется и количество ячеек понижается на единицу.

Добавление элемента в конец очереди

Для добавления элемента в начало дека используется метод класса add_end. Его параметрами является добавляемый элемент b. Необходимо создать новый элемент структуры Node (el). Элементу el присваивается значение введенного с клавиатуры числа. Для добавления элемента в конец очереди, необходимо, чтобы ячейка была пуста. Указатель на последний элемент переходит на следующую ячейку, в которую и будет записан элемент. Далее указателю на последний элемент переходит на следующую ячейку, которой присваивается значение NULL. Количество ячеек возрастает на 1.

Удаление элемента из конца очереди

Для удаления элемента из начала очереди используется метод класса delete_end. Для удаления элемента из конца дека надо создать новый элемент структуры Node (el). Элементу el присваивается указатель на первый элемент. Пока el не примет значения NULL, элемент будет принимать значения следующего элемента. Затем el удаляется и ссылке на последний элемент присваивается значение el. Количество ячеек уменьшается.

Проверка очереди на наличие в нем элемента

Для проверки очереди используется метод класса prov. Этот метод имеет тип Boolean. Для проверки на наличие элементов в очереди, создается новый элемент структуры Node и ему присваивается указатель на первый элемент дека. Если ячейка не пуста, то возвращается значение true, в противном случае, false.

Функция вывода очереди в StringGrid. Данная функция необходима для отображения вставки и удаления элементов в таблицу StringGrid. Функция увеличивает количество ячеек таблицы, если обнаруживает, что ячейка не пуста.

Глава 2. Программная реализация операций со стеками

2.1 Интерфейс программы

программный стек данные интерфейс

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

В программе «Ochered» присутствуют следующие команды :

· F1 -Добавить элемент

· F2 -Вывод списка

· F3 -Удаление элемента по значению

· F4 - Удаление элемента по порядковому номеру

· F5 - Поиск элемента по значению

· F6 - Справка

· F7 - Выход

Код интерфейса (меню программы):

Вид интерфейса при запуске программы:

Функции программы

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

Далее рассмотрим то, как выглядят другие составляющие данного продукта:

Добавления элемента:

Пример результата:

Вывод элемента:

Пример результата:

Удаление элемента по значению:

Пример результата:

Удаление элемента по порядковому номеру:

Пример результата:

Поиск элемента по значению:

Пример результата:

Заключение

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

В первой главе был изучен вопрос о важности очередей. Рассмотрена классификация очередей, которые подразделяются по сложности, способу представления, по наличию связей, изменчивости, характеру упорядоченности элементов, по виду памяти. Особым пунктом изучения данной работы являются очереди. Очередь - такой последовательный список с переменной длинной, включение элементов в который происходит с одной стороны, а исключение элементов - с другой стороны списка. Очередь иногда называют циклической памятью или списком типа FIFO («first-in-first-out» - «первым включается - первым исключается»).

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

Вторая глава данной работы состоит из написания программы «Очередь». Для чего были использованы систематические данные очереди , элементы автоматизации очередей . Составленная программа «Очередь» использует различные процедуры. Программа имеет свою интерфейсную часть, каждая функция ее выделена в отдельную процедуру. Для удобства использования программы «Очередь» были использованы горячие клавиши.

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

Список использованной литературы

1. Андреева Т.А. Основы информационных технологий. Программирование на языке PASCAL [Текст]: учебное пособие. / Т.А. Андреева. - М.: Интернет-Университет Информационных технологий; БИНОМ. Лаборатория знаний, 2008. - 234с.

2. Глинский Я. TurboPascal 7.0 и Delphi [Текст]: учебное пособие. / Я. Н. Глинский. - М.: Диасофт, 2009. - 280с.

3. Епашников А., Епашников В. Программирование в среде TurboPascal 7.0. [Текст]: учебное пособие. 3-е изд., стер./ А. Епашников, В. Епашников. - М.: «ДИАЛОГ-МИФИ», 2010. - 203с.

4. Коффман Э. TurboPascal [Текст]/ Э. Б. Коффман. - М.: Диалектика, 2007. - 896с.

5. Лукин С.Н. Турбо Паскаль 7.0. [Текст]: самоучитель для начинающих. / С. Н. Лукин. - М.: Диалог - МИФИ, 2010. - 400с.

6. Марченко А. Программирование в среде TurboPascal 7.0. Базовый курс [Текст] / А. И. Марченко, Л. А. Марченко. - М.: Век+, 2007. - 464с.

7. Немнюгин С.А. TurboPascal. Программирование на языке высокого уровня [Текст]: учебник для вузов. 2-е изд. - СПб.: Питер, 2008. - 544с.: ил.

8. Федоренко Ю. Алгоритмы и программы на TurboPascal[Текст]: учебный курс. / Ю. П. Федоренко. - СПб: Питер, 2009. - 240с.

9. http://life-prog.ru/view_cat.php?cat=1

10. http://pascal.guti.ru/

11. http://www.uchites.ru/informatika/pascal

12. http://www.pascal.helpov.net/

Приложение. Листинг программы

Program Ocheredb;

uses

crt;

type

Tinf=integer;

List=^TList;

TList=record

data:TInf;

next:List;

end;

procedureAddElem(var ocheredb:List;znach1:TInf); { процедура добавление элемента в очередь}

var

tmp:List;

begin

GetMem(tmp,sizeof(TList));

tmp^.next:=ocheredb;

tmp^.data:=znach1;

ocheredb:=tmp;

end;

procedure Print(ocheredb:List); { вывод очереди}

begin

ifocheredb=nil then

begin

writeln('ЋзҐаҐ¤мЇгбвa.');

exit;

end;

whileocheredb<>nil do

begin

Write(ocheredb^.data, ' ');

ocheredb:=ocheredb^.next

end;

end;

Procedure Freeocheredb(ocheredb:List); { освобождение памяти использованного под очередь}

var

tmp:List;

begin

whileocheredb<>nil do

begin

tmp:=ocheredb;

ocheredb:=ocheredb^.next;

FreeMem(tmp,SizeOf(Tlist));

end;

end;

Function SearchElemZnach(ocheredb:List;znach1:TInf):List; { поиск в очереди по значению, функция возвращает адрес найденного элемента}

begin

ifocheredb<>nil then

while (ocheredb<>nil) and (znach1<>ocheredb^.data) do

ocheredb:=ocheredb^.next;

SearchElemZnach:=ocheredb;

end;

Procedure DelElem(varocheredb:List;tmp:List); { процедура удаления из очереди элемента с адресом tmp}

var

tmpi:List;

begin

if (ocheredb=nil) or (tmp=nil) then

exit;

iftmp=ocheredb then

begin

ocheredb:=tmp^.next;

FreeMem(tmp,SizeOf(TList));

end

else

begin

tmpi:=ocheredb;

whiletmpi^.next<>tmp do

tmpi:=tmpi^.next;

tmpi^.next:=tmp^.next;

FreeMem(tmp,sizeof(TList));

end;

end;

procedureDelElemZnach(var ocheredb:List;znach1:TInf); { удаление из очереди элемента со значением znach1}

var

tmp:List;

begin

ifocheredb=nil then

begin

Writeln('ЋзҐаҐ¤мЇгбвa');

exit;

end;

tmp:=SearchElemZnach(ocheredb,znach1);

iftmp=nil then

begin

writeln('ќ«Ґ¬ҐnвбЁбЄ®¬л¬ §naзҐnЁҐ¬ ' ,znach1, ' ®вбгвбвўгҐвў ®зҐаҐ¤Ё.');

exit;

end;

DelElem(ocheredb,tmp);

Writeln('ќ«Ґ¬Ґnвг¤a«сn.');

end;

Procedure DelElemPos(varocheredb:List;posi:integer); { удаление из очереди элемента с порядковым номером posi}

var

i:integer;

tmp:List;

begin

ifposi<1 then

exit;

ifocheredb=nil then

begin

Write('ЋзҐаҐ¤мЇгбвta');

exit

end;

i:=1;

tmp:=ocheredb;

while (tmp<>nil) and (i<>posi) do

begin

tmp:=tmp^.next;

inc(i)

end;

iftmp=nil then

begin

Writeln('ќ«Ґ¬ҐnвbIбЇ®ап¤Є®ўл¬ n®¬Ґа®¬ ' ,posi, ' HҐвў ®зҐаҐ¤Ё.');

writeln('‚ ®зҐаҐ¤Ё ' ,i-1, ' н«Ґ¬Ґnв.');

exit

end;

DelElem(ocheredb,tmp);

Writeln('ќ«Ґ¬Ґnвг¤a«сn.');

end;

Procedure Spravka; {процедура вывода справки}

Var c:text;

komp:char;

begin

assign(c,'C:\FPC\spravka.txt');

reset(c);

while not eof(c) do

begin

read(c,komp);

write (komp,' ');

end;

close(c);

writeln;

end;

var

Och,

tmpl:List;

znach:Tinf;

ch:char;

begin

Och:=nil;

repeat

clrscr;

Writeln('_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_');

Writeln('Џа®Јаa¬¬a ¤«паaЎ®влб ®зҐаҐ¤п¬Ё.');

Writeln('‚лЎҐаЁвҐ ¦Ґ«aҐ¬®Ґ ¤Ґ©бвўЁҐ:');

Writeln('F1) „®ЎaўЁвмн«Ґ¬Ґnв.');

Writeln('F2) ‚лў®¤ ®зҐаҐ¤Ё (naзЁnaпбЈ®«®ўл).');

Writeln('F3) “¤a«ҐnЁҐн«Ґ¬Ґnвa Ї® §naзҐnЁо.');

Writeln('F4) “¤a«ҐnЁҐн«Ґ¬Ґnвa Ї® Ї®ап¤Є®ў®¬г n®¬Ґаг.');

Writeln('F5) Џ®ЁбЄн«Ґ¬Ґnвa Ї® §naзҐnЁо.');

Writeln('F6) Spravka.');

Writeln('F7) ‚л室.');

Writeln('_/\_/\_/\_/\_/\_/\_(c)'®ЇзЁҐў.‚.„ /\_/\_/\_/\_/\_/\_');

writeln;

ch:=readkey;

casech of

#59:begin

write('‚ўҐ¤ЁвҐ §naзҐnЁҐ ¤®Ўaў«пҐ¬®Ј® н«Ґ¬Ґnвa ');

readln(znach);

AddElem(Och,znach);

end;

#60:begin

clrscr;

Print(Och);

readkey;

end;

#61:begin

Write('‚ўҐ¤ЁвҐ §naзҐnЁҐг¤a«пҐ¬®Ј® н«Ґ¬Ґnвa ');

readln(znach);

DelElemZnach(Och,znach);

readkey;

end;

#62:begin

Write('‚ўҐ¤ЁвҐЇ®ап¤Є®ўл© n®¬Ґаг¤a«пҐ¬®Ј® н«Ґ¬Ґnвa ');

readln(znach);

DelElemPos(Och,znach);

readkey;

end;

#63:begin

write('‚ўҐ¤ЁвҐ §naзҐnЁҐЁбЄ®¬®Ј® н«Ґ¬Ґnвa ');

readln(znach);

tmpl:=SearchElemZnach(Och,znach);

iftmpl=nil then

write('ЁбЄ®¬л© н«Ґ¬Ґnв ®вбгвбвўгҐвў ®зҐаҐ¤Ё')

else

write('ќ«Ґ¬Ґnв ',tmpl^.data,' na©¤Ґn');

readkey;

end;

#64:Spravka;

end;

untilch=#65;

Freeocheredb(Och);

end.

Размещено на Allbest.ru


Подобные документы

  • Понимание принципа работы очереди. Возможности обращения к первому и последнему элементов очереди. Создание очереди с помощью массива. Рассмотрение примеров использования очереди с приоритетом в программе. Формирование односвязного и двусвязного списков.

    контрольная работа [345,6 K], добавлен 26.11.2020

  • Общее понятие и специфика применения очереди в программировании. Способы реализации очереди, их сущностная характеристика. Основные проблемы в использовании списков. Представление очереди в виде массива и двух целочисленных переменных start и end.

    презентация [895,9 K], добавлен 14.10.2013

  • Основные понятия объектно-ориентированного программирования, особенности описания функций и классов. Разработка программы для работы с универсальной очередью установленного типа, добавления и удаления ее элементов и вывода содержимого очереди на экран.

    курсовая работа [187,2 K], добавлен 27.08.2012

  • Принципы разработки и примеры работы программы, реализующей основные операции над базами данных (выбор, добавление, модификация и удаление данных), ее функциональные модели и блок-схемы. Особенности выполнения запроса и скорость операций обновления.

    курсовая работа [853,4 K], добавлен 25.01.2010

  • Проблемы с организацией данных. Определение и классификация динамических структур данных. Линейные односвязные, двухсвязные, кольцевые списки. Очередь, стеки. Описание основных типов данных и функции для работы с ними. Листинг программы, пример ее работы.

    контрольная работа [290,6 K], добавлен 17.07.2012

  • Анализ предметной области объекта автоматизации "Компьютерные курсы". Обзор информационных технологий, подходящих для разработки информационной системы. Требования к разрабатываемой базе данных и ее проектирование, особенности ее программной реализации.

    курсовая работа [369,8 K], добавлен 30.05.2013

  • Организация данных с помощью бинарных деревьев. Определение бинарного дерева. Упорядоченное двоичное дерево поиска и его свойства. Программная реализация добавления данных в упорядоченное двоичное дерево с использованием динамических структур данных.

    курсовая работа [459,0 K], добавлен 09.08.2012

  • Определение понятия структур данных. Рассмотрение информации и ее представления в памяти. Особенности непозиционных и позиционных систем счисления. Классификация структур данных, операции над ними. Структурность данных и технология программирования.

    презентация [359,3 K], добавлен 20.05.2015

  • Описание процедуры выбора структуры хранения данных. Программная реализация одномерного неоднородного массива. Представление бинарного дерева в виде динамической структуры данных. Изучение способов поиска в упорядоченном дереве. Содержание базы данных.

    практическая работа [850,0 K], добавлен 16.04.2015

  • Очередь в циклическом массиве. Извлечение элемента из очереди. Анализ сложности алгоритма. Класс входных данных, для которых применим алгоритм или структура. Выбор средств разработки. Определение отображаемых элементов, проектирование интерфейса.

    курсовая работа [299,9 K], добавлен 07.06.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.