Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБОРАТОРНАЯ РАБОТА №3 - II сем. - Стеки Деки О...doc
Скачиваний:
3
Добавлен:
11.08.2019
Размер:
79.87 Кб
Скачать

Министерство образования Российской Федерации

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

Кафедра электронных вычислительных машин

Стеки, очереди и хэш-таблицы

Методические указания

к лабораторной работе №3 по дисциплине

«Программирование на языках высокого уровня»

для студентов специальности 220100 (ВМКСС)

Тверь, 20010 Цель работы

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

Содержание отчета

Отчет по работе должен содержать:

  1. Цель работы

  2. Вариант задания на выполнение работы

  3. Алгоритм программы в виде псевдокода.

  4. Исходный текст программы.

  5. Результаты выполнения программы.

Варианты выполнения работы

Варианты 1-10 (Сложность 1)

  1. Использовать контейнер Stack для создания стека, хранящего символы. В созданном стеке найти и удалить первый от вершины гласный символ.

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

  3. Использовать контейнер HashTable для создания русско-английского словаря. Ввести в цикле несколько английских слов и для них определить, у какого слова самый длинный русский эквивалент.

Варианты 11-20 (Сложность 2)

  1. Использовать контейнер Stack для создания стека, хранящего символы. В созданном стеке найти и поместить на вершину самый последний по алфавиту символ. Порядок остальных символов оставить прежним.

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

  3. Использовать контейнер HashTable для создания русско-английского словаря. Ввести в цикле несколько английских слов и для них определить, русский эквивалент самого длинного английского слова. Если таких слов несколько, найти все их эквиваленты.

  4. Использовать контейнер HashTable для создания русско-английского словаря. Ввести предложение, состоящее из нескольких английских слов и для них определить русский эквивалент этого предложения. Вместо отсутствующих слов добавить в получившуюся фразу словосочетание «нет в словаре».

Варианты 21-30 (Сложность 3)

  1. Использовать контейнер Stack для создания стека, хранящего слова. В созданном стеке найти и разобрать на буквы слово минимальной длины. Порядок остальных слов оставить прежним. Для временного хранения слов использовать второй стек.

  2. Использовать контейнер Queue для хранения структур, содержащих координаты точки. В созданной очереди найти точку, ближе всех находящуюся к началу координат, и поместить эту точку (или точки, если их несколько) в начало очереди, остальные разместив в обратном порядке. Для временного хранения точек использовать стек.

  3. Использовать контейнер HashTable для создания двух словарей: русско-английского и англо-русского. Для созданных словарей проверить, совпадают ли в них слова. Вместо отсутствующих слов добавить в получившуюся фразу словосочетание «нет в словаре:» + название словаря («русско-английский» или «англо-русский»).

  4. .

Варианты 31-40 (Сложность 4)

  1. Разработать собственный класс MyStack для создания стека, хранящего символы. В созданном стеке найти и удалить первый от вершины гласный символ.

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

  3. Разработать собственный класс MyStack для создания стека. Стек хранит символьные строки и организован с использованием двунаправленного списка. Продемонстрировать работу всех функций созданного класса.

  4. Разработать собственный класс MyStack для создания стека. Стек хранит заданные программистом структуры данных и организован с использованием динамического массива. Продемонстрировать работу всех функций созданного класса.

Варианты 41-50 (Сложность 5)

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

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

  3. Разработать собственный класс MyQueue для хранения символьных строк. В созданной очереди объединить все рядом расположенные строки, суммарная длина которых не превышает М символов, оставив остальные в том же порядке.

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

Варианты 51-60 (Сложность 6)

  1. Разработать собственный класс MyQueue для работы с приоритетной очередью. Запрос в очереди реализовать через структуру, хранящую приоритет и текстовое поле. Постановка запросов в очередь выполняется по приоритету, снятие - подряд из младших адресов (начала очереди). Очередь организована на массиве со сдвигом после каждого чтения. Приоритет: мin значение числового параметра, при совпадении параметров – LIFO. Продемонстрировать работу всех функций созданного класса.

  2. Разработать собственный класс MyQueue для работы с приоритетной очередью. Запрос в очереди реализовать через структуру, хранящую приоритет и текстовое поле. Постановка запросов в очередь выполняется по приоритету, снятие - подряд из младших адресов (начала очереди). Очередь организована на массиве со сдвигом после достижения границы памяти, которая выделена для очереди. Приоритет: max значение числового параметра, при совпадении параметров – LIFO. Продемонстрировать работу всех функций созданного класса.

  3. Разработать собственный класс MyQueue для работы с приоритетной очередью. Запрос в очереди реализовать через структуру, хранящую приоритет и текстовое поле. Постановка запросов в очередь выполняется подряд в старшие адреса (конец очереди), снятие - по приоритету. Очередь организована на массиве со сдвигом после каждого чтения. Приоритет: мin значение числового параметра, при совпадении параметров – LIFO. Продемонстрировать работу всех функций созданного класса.

  4. Разработать собственный класс MyQueue для работы с приоритетной очередью. Запрос в очереди реализовать через структуру, хранящую приоритет и текстовое поле. Постановка запросов в очередь выполняется подряд в старшие адреса (конец очереди), снятие - по приоритету. Очередь организована на списке. Приоритет: мах значение числового параметра, при совпадении параметров – LIFO. Продемонстрировать работу всех функций созданного класса.

  5. Разработать собственный класс MyQueue для работы с приоритетной очередью. Запрос в очереди реализовать через структуру, хранящую приоритет и текстовое поле. Постановка запросов в очередь выполняется подряд в старшие адреса (конец очереди), снятие - по приоритету. Очередь организована на массиве с циклическим заполнением. Приоритет: мin значение числового параметра, при совпадении параметров – LIFO. Продемонстрировать работу всех функций созданного класса.

  6. Разработать собственный класс MyQueue для работы с приоритетной очередью. Запрос в очереди реализовать через структуру, хранящую приоритет и координаты точки. Постановка запросов в очередь выполняется по приоритету, снятие - подряд из младших адресов (начала очереди). Очередь организована на массиве со сдвигом после каждого чтения. Приоритет: мin значение числового параметра, при совпадении параметров – FIFO. Продемонстрировать работу всех функций созданного класса.

  7. Разработать собственный класс MyQueue для работы с приоритетной очередью. Запрос в очереди реализовать через структуру, хранящую приоритет и координаты точки. Постановка запросов в очередь выполняется по приоритету, снятие - подряд из младших адресов (начала очереди). Очередь организована на массиве со сдвигом после достижения границы памяти, которая выделена для очереди. Приоритет: max значение числового параметра, при совпадении параметров – FIFO. Продемонстрировать работу всех функций созданного класса.

  8. Разработать собственный класс MyQueue для работы с приоритетной очередью. Запрос в очереди реализовать через структуру, хранящую приоритет и координаты точки. Постановка запросов в очередь выполняется подряд в старшие адреса (конец очереди), снятие - по приоритету. Очередь организована на массиве со сдвигом после каждого чтения. Приоритет: мin значение числового параметра, при совпадении параметров – FIFO. Продемонстрировать работу всех функций созданного класса.

  9. Разработать собственный класс MyQueue для работы с приоритетной очередью. Запрос в очереди реализовать через структуру, хранящую приоритет и координаты точки. Постановка запросов в очередь выполняется подряд в старшие адреса (конец очереди), снятие - по приоритету. Очередь организована на списке. Приоритет: мах значение числового параметра, при совпадении параметров – FIFO. Продемонстрировать работу всех функций созданного класса.

  10. Разработать собственный класс MyQueue для работы с приоритетной очередью. Запрос в очереди реализовать через структуру, хранящую приоритет и координаты точки. Постановка запросов в очередь выполняется подряд в старшие адреса (конец очереди), снятие - по приоритету. Очередь организована на массиве с циклическим заполнением. Приоритет: мin значение числового параметра, при совпадении параметров – FIFO. Продемонстрировать работу всех функций созданного класса

Варианты 61-70 (Сложность 7)

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

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

  3. ..

  4. ..

  5. ..

  6. ..

  7. ..

  8. ..

  9. ..

Варианты 71-80 (Сложность 8)

  1. Разработать собственный класс MyHashTable для создания русско-английского словаря. Способ хранения пар «ключ-значение» выбрать самостоятельно. Ввести в цикле несколько английских слов и для них определить, у какого слова самый длинный русский эквивалент.

  2. Разработать собственный класс MyHashTable для создания двух словарей: русско-английского и англо-русского. Для созданных словарей проверить, совпадают ли в них слова. Вместо отсутствующих слов добавить в получившуюся фразу словосочетание «нет в словаре:» + название словаря («русско-английский» или «англо-русский»).

  3. Разработать собственный класс MyHashTable для создания русско-английского словаря. Ввести в цикле несколько английских слов и для них определить, русский эквивалент самого длинного английского слова. Если таких слов несколько, найти все их эквиваленты.

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

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

  6. Разработать собственный класс MyHashTable для хранения структур, каждая из которых хранит информацию о маршруте городского транспорта (4-5 полей). В качестве ключевого поля использовать номер маршрута + вид транспорта. Продемонстрировать работу всех функций созданного класса.

  7. Разработать собственный класс MyHashTable для хранения структур, каждая из которых хранит информацию об авиарейсе (4-5 полей). В качестве ключевого поля использовать номер рейса. Продемонстрировать работу всех функций созданного класса.

  8. Разработать собственный класс MyHashTable для хранения структур, каждая из которых хранит информацию об автомобиле (4-5 полей). В качестве ключевого поля использовать номер государственной регистрации автомобиля. Продемонстрировать работу всех функций созданного класса.

  9. ..

  10. ..

Варианты 81-90 (Сложность 9)

  1. Описать структуру point для хранения координат точки. Использовать контейнер Stack<point> для реализации алгоритма закраски замкнутого контура по известной точке внутри него.

  2. Использовать Stack<char> для реализации алгоритма, проверяющего правильность расстановки скобок различного типа в скобочном выражении.

  3. Использовать Stack<char> и Stack<int> для реализации алгоритма вычисления значения арифметического выражения, содержащего целые числа и знаки арифметических операции.

Варианты 91-100 (Сложность 10)

  1. Использовать Stack<char> и Stack<int> для реализации алгоритма вычисления значения арифметического выражения, содержащего целые числа, знаки арифметических операции, а также круглые скобки.