Министерство образования Российской Федерации
Тверской государственный технический университет
Кафедра электронных вычислительных машин
Стеки, очереди и хэш-таблицы
Методические указания
к лабораторной работе №3 по дисциплине
«Программирование на языках высокого уровня»
для студентов специальности 220100 (ВМКСС)
Тверь, 20010 Цель работы
Научиться создавать и использовать динамические структуры данных на основе линейных списков – стеки, очереди и хэш-таблицы.
Содержание отчета
Отчет по работе должен содержать:
Цель работы
Вариант задания на выполнение работы
Алгоритм программы в виде псевдокода.
Исходный текст программы.
Результаты выполнения программы.
Варианты выполнения работы
Варианты 1-10 (Сложность 1)
Использовать контейнер Stack для создания стека, хранящего символы. В созданном стеке найти и удалить первый от вершины гласный символ.
Использовать контейнер Queue для хранения целых чисел. В созданной очереди удалить все отрицательные элементы, оставив остальные в том же порядке.
Использовать контейнер HashTable для создания русско-английского словаря. Ввести в цикле несколько английских слов и для них определить, у какого слова самый длинный русский эквивалент.
…
…
…
…
…
…
…
Варианты 11-20 (Сложность 2)
Использовать контейнер Stack для создания стека, хранящего символы. В созданном стеке найти и поместить на вершину самый последний по алфавиту символ. Порядок остальных символов оставить прежним.
Использовать контейнер Queue для хранения дробных чисел. В созданной очереди определить сумму дробных частей всех ее элементов и поместить эту сумму в начало очереди, оставив остальные в том же порядке.
Использовать контейнер HashTable для создания русско-английского словаря. Ввести в цикле несколько английских слов и для них определить, русский эквивалент самого длинного английского слова. Если таких слов несколько, найти все их эквиваленты.
Использовать контейнер HashTable для создания русско-английского словаря. Ввести предложение, состоящее из нескольких английских слов и для них определить русский эквивалент этого предложения. Вместо отсутствующих слов добавить в получившуюся фразу словосочетание «нет в словаре».
…
…
…
…
…
Варианты 21-30 (Сложность 3)
Использовать контейнер Stack для создания стека, хранящего слова. В созданном стеке найти и разобрать на буквы слово минимальной длины. Порядок остальных слов оставить прежним. Для временного хранения слов использовать второй стек.
Использовать контейнер Queue для хранения структур, содержащих координаты точки. В созданной очереди найти точку, ближе всех находящуюся к началу координат, и поместить эту точку (или точки, если их несколько) в начало очереди, остальные разместив в обратном порядке. Для временного хранения точек использовать стек.
Использовать контейнер HashTable для создания двух словарей: русско-английского и англо-русского. Для созданных словарей проверить, совпадают ли в них слова. Вместо отсутствующих слов добавить в получившуюся фразу словосочетание «нет в словаре:» + название словаря («русско-английский» или «англо-русский»).
.
…
…
…
…
…
Варианты 31-40 (Сложность 4)
Разработать собственный класс MyStack для создания стека, хранящего символы. В созданном стеке найти и удалить первый от вершины гласный символ.
Разработать собственный класс MyStack для создания стека. Стек хранит символьные строки и организован с использованием однонаправленного списка. Продемонстрировать работу всех функций созданного класса.
Разработать собственный класс MyStack для создания стека. Стек хранит символьные строки и организован с использованием двунаправленного списка. Продемонстрировать работу всех функций созданного класса.
Разработать собственный класс MyStack для создания стека. Стек хранит заданные программистом структуры данных и организован с использованием динамического массива. Продемонстрировать работу всех функций созданного класса.
…
…
…
…
Варианты 41-50 (Сложность 5)
Разработать собственный класс MyQueue для хранения целых чисел. В созданной очереди удалить все отрицательные элементы, оставив остальные в том же порядке.
Разработать собственный класс MyQueue для хранения целых чисел. В созданной очереди поменять местами все рядом стоящие пары элементов одного знака, оставив остальные в том же порядке.
Разработать собственный класс MyQueue для хранения символьных строк. В созданной очереди объединить все рядом расположенные строки, суммарная длина которых не превышает М символов, оставив остальные в том же порядке.
Разработать собственный класс MyQueue для хранения символьных строк. В созданной очереди найти строку, имеющую наибольшее количество гласных символов и переместить ее в начало очереди, оставив остальные в том же порядке.
…
…
…
…
…
Варианты 51-60 (Сложность 6)
Разработать собственный класс MyQueue для работы с приоритетной очередью. Запрос в очереди реализовать через структуру, хранящую приоритет и текстовое поле. Постановка запросов в очередь выполняется по приоритету, снятие - подряд из младших адресов (начала очереди). Очередь организована на массиве со сдвигом после каждого чтения. Приоритет: мin значение числового параметра, при совпадении параметров – LIFO. Продемонстрировать работу всех функций созданного класса.
Разработать собственный класс MyQueue для работы с приоритетной очередью. Запрос в очереди реализовать через структуру, хранящую приоритет и текстовое поле. Постановка запросов в очередь выполняется по приоритету, снятие - подряд из младших адресов (начала очереди). Очередь организована на массиве со сдвигом после достижения границы памяти, которая выделена для очереди. Приоритет: max значение числового параметра, при совпадении параметров – LIFO. Продемонстрировать работу всех функций созданного класса.
Разработать собственный класс MyQueue для работы с приоритетной очередью. Запрос в очереди реализовать через структуру, хранящую приоритет и текстовое поле. Постановка запросов в очередь выполняется подряд в старшие адреса (конец очереди), снятие - по приоритету. Очередь организована на массиве со сдвигом после каждого чтения. Приоритет: мin значение числового параметра, при совпадении параметров – LIFO. Продемонстрировать работу всех функций созданного класса.
Разработать собственный класс MyQueue для работы с приоритетной очередью. Запрос в очереди реализовать через структуру, хранящую приоритет и текстовое поле. Постановка запросов в очередь выполняется подряд в старшие адреса (конец очереди), снятие - по приоритету. Очередь организована на списке. Приоритет: мах значение числового параметра, при совпадении параметров – LIFO. Продемонстрировать работу всех функций созданного класса.
Разработать собственный класс MyQueue для работы с приоритетной очередью. Запрос в очереди реализовать через структуру, хранящую приоритет и текстовое поле. Постановка запросов в очередь выполняется подряд в старшие адреса (конец очереди), снятие - по приоритету. Очередь организована на массиве с циклическим заполнением. Приоритет: мin значение числового параметра, при совпадении параметров – LIFO. Продемонстрировать работу всех функций созданного класса.
Разработать собственный класс MyQueue для работы с приоритетной очередью. Запрос в очереди реализовать через структуру, хранящую приоритет и координаты точки. Постановка запросов в очередь выполняется по приоритету, снятие - подряд из младших адресов (начала очереди). Очередь организована на массиве со сдвигом после каждого чтения. Приоритет: мin значение числового параметра, при совпадении параметров – FIFO. Продемонстрировать работу всех функций созданного класса.
Разработать собственный класс MyQueue для работы с приоритетной очередью. Запрос в очереди реализовать через структуру, хранящую приоритет и координаты точки. Постановка запросов в очередь выполняется по приоритету, снятие - подряд из младших адресов (начала очереди). Очередь организована на массиве со сдвигом после достижения границы памяти, которая выделена для очереди. Приоритет: max значение числового параметра, при совпадении параметров – FIFO. Продемонстрировать работу всех функций созданного класса.
Разработать собственный класс MyQueue для работы с приоритетной очередью. Запрос в очереди реализовать через структуру, хранящую приоритет и координаты точки. Постановка запросов в очередь выполняется подряд в старшие адреса (конец очереди), снятие - по приоритету. Очередь организована на массиве со сдвигом после каждого чтения. Приоритет: мin значение числового параметра, при совпадении параметров – FIFO. Продемонстрировать работу всех функций созданного класса.
Разработать собственный класс MyQueue для работы с приоритетной очередью. Запрос в очереди реализовать через структуру, хранящую приоритет и координаты точки. Постановка запросов в очередь выполняется подряд в старшие адреса (конец очереди), снятие - по приоритету. Очередь организована на списке. Приоритет: мах значение числового параметра, при совпадении параметров – FIFO. Продемонстрировать работу всех функций созданного класса.
Разработать собственный класс MyQueue для работы с приоритетной очередью. Запрос в очереди реализовать через структуру, хранящую приоритет и координаты точки. Постановка запросов в очередь выполняется подряд в старшие адреса (конец очереди), снятие - по приоритету. Очередь организована на массиве с циклическим заполнением. Приоритет: мin значение числового параметра, при совпадении параметров – FIFO. Продемонстрировать работу всех функций созданного класса
Варианты 61-70 (Сложность 7)
Разработать собственный класс MyDeck для работы с деком. Дек организован на массиве с циклическим заполнением. Операции выполняются с обоих концов Дека. Запрос в деке реализовать через структуру, хранящую координаты точки. Продемонстрировать работу всех функций созданного класса.
Разработать собственный класс MyDeck для работы с деком. Дек организован на двунаправленном списке. Операции выполняются с обоих концов Дека. Запрос в деке реализовать через структуру, хранящую координаты точки. Продемонстрировать работу всех функций созданного класса.
..
..
..
..
..
..
..
Варианты 71-80 (Сложность 8)
Разработать собственный класс MyHashTable для создания русско-английского словаря. Способ хранения пар «ключ-значение» выбрать самостоятельно. Ввести в цикле несколько английских слов и для них определить, у какого слова самый длинный русский эквивалент.
Разработать собственный класс MyHashTable для создания двух словарей: русско-английского и англо-русского. Для созданных словарей проверить, совпадают ли в них слова. Вместо отсутствующих слов добавить в получившуюся фразу словосочетание «нет в словаре:» + название словаря («русско-английский» или «англо-русский»).
Разработать собственный класс MyHashTable для создания русско-английского словаря. Ввести в цикле несколько английских слов и для них определить, русский эквивалент самого длинного английского слова. Если таких слов несколько, найти все их эквиваленты.
Разработать собственный класс MyHashTable для создания русско-английского словаря. Ввести предложение, состоящее из нескольких английских слов и для них определить русский эквивалент этого предложения. Вместо отсутствующих слов добавить в получившуюся фразу словосочетание «нет в словаре».
Разработать собственный класс MyHashTable для хранения структур, каждая из которых хранит информацию о поезде дальнего следования (4-5 полей). В качестве ключевого поля использовать номер поезда. Продемонстрировать работу всех функций созданного класса.
Разработать собственный класс MyHashTable для хранения структур, каждая из которых хранит информацию о маршруте городского транспорта (4-5 полей). В качестве ключевого поля использовать номер маршрута + вид транспорта. Продемонстрировать работу всех функций созданного класса.
Разработать собственный класс MyHashTable для хранения структур, каждая из которых хранит информацию об авиарейсе (4-5 полей). В качестве ключевого поля использовать номер рейса. Продемонстрировать работу всех функций созданного класса.
Разработать собственный класс MyHashTable для хранения структур, каждая из которых хранит информацию об автомобиле (4-5 полей). В качестве ключевого поля использовать номер государственной регистрации автомобиля. Продемонстрировать работу всех функций созданного класса.
..
..
Варианты 81-90 (Сложность 9)
Описать структуру point для хранения координат точки. Использовать контейнер Stack<point> для реализации алгоритма закраски замкнутого контура по известной точке внутри него.
Использовать Stack<char> для реализации алгоритма, проверяющего правильность расстановки скобок различного типа в скобочном выражении.
Использовать Stack<char> и Stack<int> для реализации алгоритма вычисления значения арифметического выражения, содержащего целые числа и знаки арифметических операции.
…
…
…
…
…
…
…
Варианты 91-100 (Сложность 10)
Использовать Stack<char> и Stack<int> для реализации алгоритма вычисления значения арифметического выражения, содержащего целые числа, знаки арифметических операции, а также круглые скобки.