СОДЕРЖАНИЕ
Лабораторная работа № 4 Линейные структуры данных
Абстрактные типы данных и классы
Стеки могут представляться в памяти в виде вектора или связного списка.
Как и стеки, очереди могут представляться в памяти в виде вектора или связного списка.
Как и стеки, очереди могут представляться в памяти в виде вектора или связного списка.
При организации дека в списковой структуре нужно учитывать, что при удалении последнего элемента односвязного списка нужно обнулить ссылочное поле предшествующего элемента. В односвязном списке это возможно сделать, только перебрав все элементы списка от первого до предпоследнего. Поэтому при необходимости использования именно связанной структуры хранения дек реализуется на базе двусвязного списка.
Написать две программы согласно номеру индивидуального варианта. В первом задании данные хранятся в бинарном файле записей (можно использовать файл, созданный при выполнении лабораторной работы №1), а для обработки считываются в список. При выходе из программы обработанные данные сохраняются в том же файле. Список должен описываться классом. Для организации интерфейса в программе должно использоваться меню. Во втором задании необходимо создать класс, описывающий стек или очередь, и программу решения поставленной задачи с использованием объекта этого класса.
Задания могут быть выполнены на трех уровнях сложности.
Низкий. В первом задании список линейный односвязный. Обязательные методы класса: добавление элемента в начало или конец списка (на выбор), просмотр списка, удаление элемента из начала или конца списка (на выбор). Вывод списка на экран можно выполнять в любом (главное, читабельном) виде. Во втором задании реализовать определенную вариантом структуру данных (стек или очередь) любым удобным способом, вместо решения поставленной задачи можно написать программу тестирования объекта созданного класса.
Средний. В первом задании список линейный односвязный. Обязательные методы класса: добавление элемента в упорядоченный список с сохранением упорядоченности (ключевое поле выбрать самостоятельно), просмотр списка, удаление произвольного элемента списка. Вывод данных осуществлять в табличном виде с графлением подходящими символами. Во втором задании создать класс, описывающий требуемую структуру данных, в соответствии с заданным вариантом реализации.
Высокий. В первом задании список линейный двусвязный. Обязательные методы класса: добавление элемента в произвольное место списка, просмотр списка в прямом и обратном направлении, удаление произвольного элемента списка. Вывод данных осуществлять постранично в табличном виде с графлением подходящими символами. Во втором задании создать необходимую для решения задачи структуру данных с помощью двух структур хранения: векторной и списковой,– реализацию оформить в виде классов с единым интерфейсом.
Стек в массиве. Заполнение стека должно производиться с начала массива. Методы класса: добавление элемента в стек, удаление элемента из стека, получение значения с вершины стека, проверка заполнения стека, проверка пустоты стека.
Разработайте класс, реализующий стек с помощью указателей. Методы класса: добавление элемента в стек, удаление элемента из стека, получение значения с вершины стека, проверка заполнения стека, проверка пустоты стека, очистка стека.
Разработайте класс, реализующий очередь в «циклическом» массиве. Поля класса: массив, индексы первого и последнего элементов в очереди. Методы класса: добавление элемента в очередь, удаление элемента из очереди, получение значения из очереди, проверка заполнения очереди, проверка пустоты очереди.
Разработайте класс, реализующий очередь в «циклическом» массиве. Поля класса: массив, индекс первого элемента в очереди, количество элементов в очереди. Методы класса: добавление элемента в очередь, удаление элемента из очереди, получение значения из очереди, проверка заполнения очереди, проверка пустоты очереди.
Разработайте класс, реализующий очередь с помощью указателей. Методы класса: добавление элемента в очередь, удаление элемента из очереди, получение значения из очереди, проверка заполнения очереди, проверка пустоты очереди.
Что такое абстрактный тип данных?
Что такое список?
Что такое связанный список?
Какие виды списков Вы знаете?
Какие методы применимы к спискам?
Какие методы реализации списков Вы знаете?
Что такое стек?
Какие операции применимы к стекам?
Каков механизм заполнения стека? Что такое «дно» стека?
Что такое очередь?
Какие операции применимы к очередям?
Каков механизм заполнения очереди?
Что такое дек? Какие операции применимы к декам?
В чем различие между конкатенацией двух стеков и конкатенацией двух очередей?
Что такое дескриптор списка?
Как и когда используется нулевой указатель NULL?
Какая структура данных описывается аббревиатурой LIFO?
Какая структура данных описывается аббревиатурой FIFO?
Что такое «структура данных» и «структура хранения»?
От чего зависит выбор структуры хранения для реализации структуры данных?
Вариант 17
1. Поля данных: фамилия, баллы по математике, русскому и английскому языкам. Известны проходная сумма баллов и минимальное допустимое количество баллов по каждой дисциплине. Вывести список абитуриентов, имеющих наибольшую сумму баллов, и процент абитуриентов, не выдержавших конкурса.
2.Написать программу, использующую класс (реализация 2) для отыскания прохода по лабиринту. Лабиринт представляется в виде матрицы, состоящей из квадратов. Каждый квадрат либо открыт, либо закрыт. Вход в закрытый квадрат запрещен. Если квадрат открыт, то вход в него возможен со стороны, но не с угла. Каждый квадрат определяется его координатами в матрице. После отыскания прохода программа печатает найденный путь в виде координат квадратов.