Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы.doc
Скачиваний:
10
Добавлен:
10.05.2015
Размер:
152.06 Кб
Скачать

17

Министерство образования и науки рф

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

Тульский государственный университет

Кафедра прикладной математики и информатики

Базы данных и экспертные системы

Методические указания по выполнению лабораторных работ

для студентов направления 010500 «Прикладная математика и информатика»

специальности 010501 «Прикладная математика и информатика» очной формы обучения

Тула 2011

Лабораторная работа № 1

ИНФОРМАЦИОННЫЕ СТРУКТУРЫ

 Цель работы

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

 Задание по вариантам

  1. Разработать программу получения обратной польской записи арифметических выражений, составленных из однобуквенных идентификаторов, открывающей и закрывающей скобок и операций: +, –, /, *, ^ (возведение в степень).

Алгоритм перевода, предложенный Э. Дейкстрой, основывается на использовании стека с приоритетами. Все символы операций и скобки имеют определенный приоритет. Для построения польской записи продвигаются вдоль выражения слева направо. Операнды переписываются в выходную строку, а операции запоминаются в стек. Если приоритет помещаемой в стек операции меньше приоритета операции, находящейся в вершине стека, то происходит выталкивание операций из стека по одной до тех пор, пока в вершине не окажется операция с меньшим приоритетом или стек не окажется пустым. Закрывающая скобка вызывает выталкивание всех символов до открывающей скобки (скобки в выходное выражение не переписываются). Операции имеют следующие приоритеты:

Операция

(

+, –

*, /

^

Приоритет

0

1

2

3

  1. Разработать программу включения и исключения элементов в очередь с последовательным распределением. Предусмотреть обработку ситуаций «ПЕРЕПОЛНЕНИЕ» и «НЕХВАТКА».

  2. Разработать программу включения и исключения элементов в очередь со связным распределением. Предусмотреть обработку ситуаций «ПЕРЕПОЛНЕНИЕ» и «НЕХВАТКА».

  3. Разработать программу обращения связного списка с произвольным числом узлов (после выполнения обращения элементы списка должны располагаться в обратном порядке).

  4. Разработать программу обращения циклического списка с произвольным числом узлов (после выполнения обращения элементы списка должны располагаться в обратном порядке).

  5. Разработать программу сложения двух многочленов Р(х,у) и Q(х,y), представленных в виде циклических списков. Узел описка имеет вид

M

a

b

link

и соответствует одночлену Мxayb.

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

  2. Разработать программу получения циклического списка по многочлену Р(x,у) (cм. вариант № 6).

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

  4. Разработать программу построения бинарного дерева по обратное польской записи (см. вариант № 1).

  5. Прямой порядок прохождения дерева состоит в следующем: 1) попасть в корень; 2) пройти левое поддерево; 3) пройти правое поддерево. Разработать программу, дающую узел дерева, следующий за данным в прямом порядке.

  6. Обратный порядок прохождения дерева состоит в следующем: 1) пройти левое поддерево; 2) попасть в корень; 3) пройти правое поддерево. Разработать программу, дающую узел дереве, следующий за данным в обратном порядке.

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

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

  9. Разработать программу копирования бинарного дерева, которая берет свободные узлы в стеке.

  10. Разработать программу удаления узла из бинарного дерева.

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

  12. Разработать программу умножения выражений вида axn + b, представленных в виде бинарного дерева.

  13. Разработать программу дифференцирования полинома Р(х) = a0xn + a1xn-1 + … + an-1x + аn, представленного в виде бинарного дерева.

  14. Разработать программу интегрирования полинома Р(х) = a0xn + a1xn-1 + … + an-1x + аn, представленного в виде бинарного дерева.

  15. Разработать программу заполнения таблицы идентификаторов языка Паскаль. В качестве хеш-функция использовать функцию h(K) = K mod M, где К — числовая характеристика идентификатора, М — размер таблицы в строках. Для разрешения коллизий использовать схему линейного опробования, согласно которой, если строчка h(K) занята другим идентификатором, то поиск свободной строчки производится в отроках h(K) – 1, h(K) – 2, …, 0, M1, M – 2, …, h(K) + 1, (h(K) < M). Обратите внимание на выбор значения М.

  16. Выполнить задание варианта № 21 для идентификаторов языка Си.

  17. Разработать программу заполнения таблицы идентификаторов языка Ассемблера. В качестве хеш-функции использовать функцию из варианта № 21. Для разрешения коллизий использовать метод цепочек.

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

  19. Пусть Т1 и Т2 — два бинарных дерева. Т1 = Т2, если деревья имеют одинаковую структуру и содержимое соответствующих узлов равно. Т1 < Т2, если Т1 содержится в Т2 качестве поддерева, Т1 > Т2, если Т2 является поддеревом Т1. Разработать программу, сравнивающую два дерева Т1 и Т2.