
Ста: Лабораторная работа №1 - Динамические структуры данных и атд
Версия 2.0, 22 сентября 2013г.
(С) 2012-2013, Зайченко Сергей Александрович, к.т.н, ХНУРЭ, доцент кафедры АПВТ
Правила выполнения лабораторной работы
Лабораторная работа выполняется либо бригадой из 2 человек, либо индивидуально. Если студент претендует на оценку “отлично”, работа должна выполняться полностью индивидуально.
В работе на выбор студента предлагаются варианты трех уровней сложности:
Базовый уровень - оценка в интервале 15-20 баллов.
Углубленный уровень - оценка в интервале 21-25 баллов.
Амбициозный уровень - оценка не менее 25 баллов + бонусные баллы на усмотрение преподавателя.
Реализовывать задачи необходимо исключительно на языке программирования С++.
Работа оценивается не только по корректности функционирования решений задач, но и по культуре оформления исходного кода в читабельном виде, адекватности разбиения решения на модули и функции.
Поскольку одной из основных целей данного курса является изучение способов построения классических структур данных, при реализации задач запрещается использовать готовые библиотечные реализации этих структур.
Защита работы:
устная и короткая без отчета в случае защиты в день лабораторной работы;
с полноценным печатным отчетом и ответами на теоретические вопросы в случае защиты в другие дни.
Неприемлемым нарушением считается копирование исходного кода программ у другой бригады или из любых других источников тем или иным способом. В случае подозрения на плагиат, преподаватель оставляет за собой право не засчитывать решение полностью или частично, в зависимости от уровня понимания бригадой написанного кода. Уровень понимания может устанавливаться дополнительными вопросами к каждому из участников бригады по коду конкретной программы, по использованным в ней конструкциям языка программирования. В качестве проверки на понимание могут быть запрошены некоторые изменения поведения программы, отклоняющиеся от оригинальных условий задачи.
Пропуск лабораторной работы, независимо от уважительности причин, не освобождает от сдачи работы. В случае пропуска следует самостоятельно найти методические указания у сокурсников или преподавателя, согласовать с преподавателем вариант задания, в домашних условиях либо с другой группой выполнить лабораторную работу, подготовить отчет и пройти защиту.
Литература к лабораторной работе
Р. Седжвик “Алгоритмы на С++”:
Глава 3 “Элементарные структуры данных”
Глава 4 “Абстрактные типы данных”
Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн “Алгоритмы. Построение и анализ”, 2 издание:
Глава 10 “Элементарные структуры данных” (подразделы 10.1-10.3)
А. Ахо, Д. Хопкрофт, Д. Ульман “Структуры данных и алгоритмы”:
Глава 2 “Основные абстрактные типы данных” (подразделы 2.1-2.4)
Д. Кнут “Искусство программирования”:
Том 1, глава 2, раздел 2.2 “Линейные списки”
Исходные данные
При решении задач лабораторной работы по желанию можно использовать готовые реализации изложенные в материалах лекций. Перечисленные ниже файлы прилагаются к данным методическим указаниям:
Реализация вектора целых чисел (integer_vector.hpp,integer_vector.cpp).
Реализация односвязного списка целых чисел (integer_list.hpp,integer_list.cpp).
Реализации стека целых чисел (integer_stack.hpp,integer_stack_vector_impl.cpp,integer_stack_list_impl.cpp,integer_stack_array_impl.cpp).
Реализации очереди целых чисел (integer_queue.hpp,integer_queue_list_impl.cpp,integer_queue_cyclic_array_impl.cpp).
Эти реализации можно использовать непосредственно как готовую библиотеку, либо использовать как начальную точку для собственного решения.
Выдавать данные файлы за собственные решения настоятельно не рекомендуется :)
Решения на основе примитивных массивов и других идеях, не относящиеся к динамическим структурам данных, не будут засчитаны.