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

ЛАБОРАТОРНАЯ РАБОТА № 1

СПИСКИ, СТЕКИ, ОЧЕРЕДИ

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

Постановка задачи

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

Варианты реализаций

Вариант № 1

Разработайте класс, реализующий стек в массиве. Заполнение стека должно производиться с начала массива. Методы класса: добавление элемента в стек, удаление элемента из стека, получение значения с вершины стека, проверка заполнения стека, проверка пустоты стека.

Вариант № 2

Разработайте класс, реализующий стек с помощью указателей. Методы класса: добавление элемента в стек, удаление элемента из стека, получение значения с вершины стека, проверка заполнения стека, проверка пустоты стека, очистка стека.

Вариант № 3

Разработайте класс DualStack, использующий один массив для сохранения двух стеков: один растет с одного конца массива, другой – с другого. Ни один из стеков не должен переполняться до тех пор, пока весь массив не будет заполнен. Методы класса: добавление элемента в стек n, удаление элемента из стека n, получение элемента с вершины стека n, проверка заполнения стека n, проверка пустоты стека n, очистка стека n.

Вариант № 4

Разработайте класс, реализующий очередь в «циклическом» массиве. Поля класса: массив, индексы первого и последнего элементов в очереди. Методы класса: добавление элемента в очередь, удаление элемента из очереди, получение значения из очереди, проверка заполнения очереди, проверка пустоты очереди.

Вариант № 5

Разработайте класс, реализующий очередь в «циклическом» массиве. Поля класса: массив, индекс первого элемента в очереди, количество элементов в очереди. Методы класса: добавление элемента в очередь, удаление элемента из очереди, получение значения из очереди, проверка заполнения очереди, проверка пустоты очереди.

Вариант № 6

Разработайте класс, реализующий очередь с помощью указателей. Методы класса: добавление элемента в очередь, удаление элемента из очереди, получение значения из очереди, проверка заполнения очереди, проверка пустоты очереди.

Варианты заданий

Вариант № 1

  1. Разработайте класс, реализующий линейный односвязный список. Методы класса: добавление элемента к концу списка, просмотр списка, обмен n-го и m-го элементов списка, удаление последнего элемента из списка. Поля записей: язык программирования (паскаль / бейсик / си), длина программы, количество встречающихся в программе операторов {:=, if, case, for, while, repeat, with} / {input, print, if, for, while, do… loop, gosub} / {if, switch, for, while, do…while, return}, время выполнения.

  2. Напишите программу, которая считывает символьную строку, содержащую три набора скобок: круглые (), угловые <> и квадратные [],- и определяет, правильно ли расставлены в этой строке скобки. Указания: в стек заносить тип скобки, использовать вариант реализации № 1.

Вариант № 2

  1. Разработайте класс, реализующий линейный односвязный список. Методы класса: вставка элемента после n-го элемента списка, просмотр списка в прямом и обратном порядке, удаление из списка каждого второго элемента. Поля записей: слово, часть речи (существительное {склонение, падеж, число (если единственное, то род)} / прилагательное {разряд (если качественное, то форма), падеж, число (если единственное, то род)} / глагол {спряжение, наклонение (если изъявительное, то время), число( если единственное, то лицо)}), начальная форма.

  2. Напишите программу, которая считывает символьную строку, содержащую три набора скобок: круглые (), угловые <> и квадратные [],- и определяет, правильно ли расставлены в этой строке скобки. Указания: в стек заносить тип скобки, использовать вариант реализации № 2.

Вариант № 3

  1. Разработайте класс, реализующий линейный односвязный список. Методы класса: добавление элемента к началу списка, просмотр списка, перемещение элемента с позиции р на n позиций вперед по списку. Поля записей: название геометрической фигуры (квадрат/прямоугольник/круг), координаты точки привязки (х, у), длина_диагонали/длины_сторон/радиус.

  2. Напишите программу для тестирования стека, используя вариант реализации № 3.

Вариант № 4

  1. Разработайте класс, реализующий линейный односвязный список. Методы класса: добавление элемента в упорядоченный список с сохранением упорядоченности, просмотр списка, удаление n-го элемента из списка. Поля записей: тип посуды (кастрюля {объем}/ сковорода {диаметр, антипригарное покрытие}), материал, цена.

  2. Фирма по хранению и сбыту бытовых инструментов получает грузы с оборудованием по различным ценам и продает их затем с 20%-ной надбавкой, причем товары, полученные позднее, продаются в первую очередь. Напишите программу, считывающую записи о торговых операциях двух типов: операции по закупке и операции по продаже. Запись о продаже содержит префикс “S” и количество товара. Запись о закупке содержит префикс “R”, количество товара и стоимость одного изделия. После считывания записи о закупке напечатайте ее с указанием стоимости всей партии. После считывания записи об операции продажи напечатайте, сколько изделий было продано, цену одного изделия в каждой продаваемой партии, стоимость каждой партии и суммарную стоимость всей сделки. Например, если фирмой были проданы 200 единиц оборудования, в которые входили 50 единиц с закупочной ценой 1.25$ и 150 единиц с закупочной ценой 1.1$, то напечатаны должны быть три строки:

50 штук по 1.50$ каждый на сумму 75.00$

150 штук по 1.32$ каждый на сумму 198.00$

Всего продано на сумму 273.00$

Если на складе отсутствует требуемое в заказе число изделий, то продайте все имеющиеся, а затем напечатайте сообщение об отсутствии остальной части изделий на складе. Используйте вариант реализации № 1.

Вариант № 5

  1. Разработайте класс, реализующий линейный односвязный список. Методы класса: вставка элемента после n-го элемента списка, просмотр списка, удаление 3-х элементов списка, начиная с n-го. Поля записей: марка машины, модификация кузова, новый/подержанный, на_гарантии(да, нет)/{год выпуска, пробег}.

  2. Фирма по хранению и сбыту бытовых инструментов получает грузы с оборудованием по различным ценам и продает их затем с 20%-ной надбавкой, причем товары, полученные позднее, продаются в первую очередь. Напишите программу, считывающую записи о торговых операциях двух типов: операции по закупке и операции по продаже. Запись о продаже содержит префикс “S” и количество товара. Запись о закупке содержит префикс “R”, количество товара и стоимость одного изделия. После считывания записи о закупке напечатайте ее с указанием стоимости всей партии. После считывания записи об операции продажи напечатайте, сколько изделий было продано, цену одного изделия в каждой продаваемой партии, стоимость каждой партии и суммарную стоимость всей сделки. Например, если фирмой были проданы 200 единиц оборудования, в которые входили 50 единиц с закупочной ценой 1.25$ и 150 единиц с закупочной ценой 1.1$, то напечатаны должны быть три строки:

50 штук по 1.50$ каждый на сумму 75.00$

150 штук по 1.32$ каждый на сумму 198.00$

Всего продано на сумму 273.00$

Если на складе отсутствует требуемое в заказе число изделий, то продайте все имеющиеся, а затем напечатайте сообщение об отсутствии остальной части изделий на складе. Используйте вариант реализации № 2.

Вариант № 6

  1. Разработайте класс, реализующий линейный двусвязный список. Методы класса: добавление элемента к концу списка, просмотр списка в прямом и обратном порядке, удаление n-го элемента из списка. Поля записей: название театра, дата, название спектакля, взрослый {жанр} /детский {возраст ребенка}.

  2. Фирма по хранению и сбыту бытовых инструментов получает грузы с оборудованием по различным ценам и продает их затем с 20%-ной надбавкой, причем товары, полученные ранее, продаются в первую очередь. Напишите программу, считывающую записи о торговых операциях двух типов: операции по закупке и операции по продаже. Запись о продаже содержит префикс “S” и количество товара. Запись о закупке содержит префикс “R”, количество товара и стоимость одного изделия. После считывания записи о закупке напечатайте ее с указанием стоимости всей партии. После считывания записи об операции продажи напечатайте, сколько изделий было продано, цену одного изделия в каждой продаваемой партии, стоимость каждой партии и суммарную стоимость всей сделки. Например, если фирмой были проданы 200 единиц оборудования, в которые входили 50 единиц с закупочной ценой 1.25$ и 150 единиц с закупочной ценой 1.1$, то напечатаны должны быть три строки:

50 штук по 1.50$ каждый на сумму 75.00$

150 штук по 1.32$ каждый на сумму 198.00$

Всего продано на сумму 273.00$

Если на складе отсутствует требуемое в заказе число изделий, то продайте все имеющиеся, а затем напечатайте сообщение об отсутствии остальной части изделий на складе. Используйте вариант реализации № 4.

Вариант № 7

  1. Разработайте класс, реализующий линейный двусвязный список. Методы класса: вставка элемента перед n-м элементом списка, просмотр списка в прямом и обратном порядке, удаление из списка каждого второго элемента. Поля записей: книга/журнал, автор_книги/номер_журнала, название книги/журнала, год издания, издательство.

  2. Фирма по хранению и сбыту бытовых инструментов получает грузы с оборудованием по различным ценам и продает их затем с 20%-ной надбавкой, причем товары, полученные ранее, продаются в первую очередь. Напишите программу, считывающую записи о торговых операциях двух типов: операции по закупку и операции по продаже. Запись о продаже содержит префикс “S” и количество товара. Запись о закупке содержит префикс “R”, количество товара и стоимость одного изделия. После считывания записи о закупке напечатайте ее с указанием стоимости всей партии. После считывания записи об операции продажи напечатайте, сколько изделий было продано, цену одного изделия в каждой продаваемой партии, стоимость каждой партии и суммарную стоимость всей сделки. Например, если фирмой были проданы 200 единиц оборудования, в которые входили 50 единиц с закупочной ценой 1.25$ и 150 единиц с закупочной ценой 1.1$, то напечатаны должны быть три строки:

50 штук по 1.50$ каждый на сумму 75.00$

150 штук по 1.32$ каждый на сумму 198.00$

Всего продано на сумму 273.00$

Если на складе отсутствует требуемое в заказе число изделий, то продайте все имеющиеся, а затем напечатайте сообщение об отсутствии остальной части изделий на складе. Используйте вариант реализации № 5.

Вариант № 8

  1. Разработайте класс, реализующий линейный двусвязный список. Методы класса: добавление элемента к началу списка, просмотр списка в прямом и обратном направлении, перемещение элемента с позиции р на n позиций назад по списку. Поля записей: ткань, тип одежды (рубашка {рукав длинный/ короткий} / брюки / платье {рукав есть/нет}), размер ({рост, охват шеи} / {рост, охват бедер} / {рост, охват груди, охват бедер}), цена.

  2. Многочлены вида , где можно представить в виде очереди, где каждый элемент имеет три поля: одно – для коэффициента ci, второе – для показателя степени ei, третье – для указателя на следующую ячейку. Для описанного представления многочленов напишите программу их дифференцирования. Использовать вариант реализации № 6.

Вариант № 9

  1. Разработайте класс, реализующий линейный двусвязный список. Методы класса: добавление элемента в упорядоченный список с сохранением упорядоченности, просмотр списка в прямом и обратном направлении, удаление первого и последнего элемента из списка. Поля записей: ФИО, год рождения, образование (высшее {вуз, номер диплома, ученая степень (да, нет)} /неполное_высшее {вуз, оконченный курс}/ среднее {школа, номер аттестата} /неполное_среднее {школа, оконченный класс}).

  2. Многочлены вида , где можно представить в виде очереди, где каждый элемент имеет три поля: одно – для коэффициента ci, второе – для показателя степени ei, третье – для указателя на следующую ячейку. Для описанного представления многочленов напишите программу их дифференцирования. Использовать вариант реализации № 5.

Вариант № 10

  1. Разработайте класс, реализующий линейный двусвязный список. Методы класса: вставка элемента после n-го элемента списка, просмотр списка в прямом и обратном направлении, удаление трех элементов списка, средний из которых имеет номер n. Поля записей: тип покрытия (линолеум {толщина, наличие утеплителя, ширина}/ ламинат{класс, площадь в 1 упаковке} / паркет{вид (паркетная доска, штучный), площадь в 1 упаковке}), цвет, цена 1 квадратного метра.

  2. Многочлены вида , где можно представить в виде очереди, где каждый элемент имеет три поля: одно – для коэффициента ci, второе – для показателя степени ei, третье – для указателя на следующую ячейку. Напишите программу сложения и вычитания многочленов, представленных описанным образом. Использовать вариант реализации № 6.

Вариант № 11

  1. Разработайте класс, реализующий кольцевой односвязный список. Методы класса: добавление элемента в список, просмотр списка, удаление произвольного элемента из списка, поиск элемента по заданному критерию. Поля записей: номер группы, имя ребенка, дата рождения: число, месяц, год,- домашний адрес: улица, дом, квартира. Найти детей, посещающих ясли (младше 3 лет на начало текущего учебного года).

  2. Напишите программу, которая считывает строку текста, помещая каждый непустой символ и в очередь, и в стек, и проверяет, является ли данная строка палиндромом. Использовать варианты реализации №1 и №4.

Вариант № 12

  1. Разработайте класс, реализующий кольцевой односвязный список. Методы класса: вставка элемента после текущего элемента списка, просмотр списка, удаление из списка каждого второго элемента. Поля записей: номер дня диеты, завтрак {1 блюдо, 2 блюдо, напиток} / обед {салат, суп, основное блюдо, напиток}/ полдник {1 блюдо, напиток}/ ужин {салат, основное блюдо, напиток}, пищевая и энергетическая ценность.

  2. Многочлены вида , где можно представить в виде очереди, где каждый элемент имеет три поля: одно – для коэффициента ci, второе – для показателя степени ei, третье – для указателя на следующую ячейку. Для описанного представления многочленов написать программу вычисления значения р(х) при заданном х. Использовать вариант реализации № 4.

Вариант № 13

  1. Разработайте класс, реализующий кольцевой односвязный список. Методы класса: добавление элемента в список, просмотр списка, перемещение элемента с текущей позиции на n позиций вперед по списку. Поля записей: страна, номинал, монета {металл, вес, диаметр}/ купюра {размеры, цвет, изображение}, год выпуска.

  2. Многочлены вида , где можно представить в виде очереди, где каждый элемент имеет три поля: одно – для коэффициента ci, второе – для показателя степени ei, третье – для указателя на следующую ячейку. Напишите программу сложения и вычитания многочленов, представленных описанным образом. Использовать вариант реализации № 5.

Вариант № 14

  1. Разработайте класс, реализующий кольцевой односвязный список. Методы класса: добавление элемента в упорядоченный список с сохранением упорядоченности, просмотр списка, удаление элементов списка с n-го по m-ный, начиная отсчет с текущего элемента списка. Поля записей: ФИО, возраст, способ связи (телефон {номер}, e-mail {адрес}).

  2. Описать класс, используя вариант реализации № 1. Написать программу, использующую этот класс для моделирования Т-образного сортировочного узла на железной дороге. Программа должна разделять на два направления состав, состоящий из вагонов двух типов (на каждое направление формируется состав из вагонов одного типа). Предусмотреть возможность формирования состава из файла и с клавиатуры.

Вариант № 15

  1. Разработайте класс, реализующий кольцевой односвязный список. Методы класса: вставка элемента перед текущим элементом списка, просмотр списка, удаление 3-х элементов списка, начиная с текущего. Поля записей: тип изделия (пирог {тесто, начинка}/ пирожное {тесто, тип крема, пропитка}), вес, калорийность, цена.

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

Вариант № 16

  1. Разработайте класс, реализующий линейный односвязный список. Методы класса: вставка элемента перед n-ным элементом списка, просмотр списка в прямом и обратном порядке, удаление из списка каждого третьего элемента, начиная с k-го. Поля записей: название произведения, автор, скульптура/картина, материал/{основа, краски}.

  2. Фирма по хранению и сбыту бытовых инструментов получает грузы с оборудованием по различным ценам и продает их затем с 20%-ной надбавкой, причем товары, полученные ранее, продаются в первую очередь. Напишите программу, считывающую записи о торговых операциях двух типов: операции по закупку и операции по продаже. Запись о продаже содержит префикс “S” и количество товара. Запись о закупке содержит префикс “R”, количество товара и стоимость одного изделия. После считывания записи о закупке напечатайте ее с указанием стоимости всей партии. После считывания записи об операции продажи напечатайте, сколько изделий было продано, цену одного изделия в каждой продаваемой партии, стоимость каждой партии и суммарную стоимость всей сделки. Например, если фирмой были проданы 200 единиц оборудования, в которые входили 50 единиц с закупочной ценой 1.25$ и 150 единиц с закупочной ценой 1.1$, то напечатаны должны быть три строки:

50 штук по 1.50$ каждый на сумму 75.00$

150 штук по 1.32$ каждый на сумму 198.00$

Всего продано на сумму 273.00$

Если на складе отсутствует требуемое в заказе число изделий, то продайте все имеющиеся, а затем напечатайте сообщение об отсутствии остальной части изделий на складе. Используйте вариант реализации № 6.

Вариант № 17

  1. Разработайте класс, реализующий кольцевой односвязный список. Методы класса: добавление элемента в список, просмотр списка, перемещение элемента с текущей позиции на n позиций назад по списку. Поля записей: наименование овощей, их сорт, количество, поставщик: название, адрес, телефон.

  2. Описать класс, используя вариант реализации № 1. Написать программу, использующую этот класс для отыскания прохода по лабиринту. Лабиринт представляется в виде матрицы, состоящей из квадратов. Каждый квадрат либо открыт, либо закрыт. Вход в закрытый квадрат запрещен. Если квадрат открыт, то вход в него возможен со стороны, но не с угла. Каждый квадрат определяется его координатами в матрице. После отыскания прохода программа печатает найденный путь в виде координат квадратов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]