- •Лабораторный практикум
- •Лабораторный практикум
- •230105 - «Программное обеспечение вычислительной техники и автоматизированных систем»
- •220201- «Управление и информатика в технических системах»
- •Лабораторная работа № 1
- •Фундаментальные структуры данных
- •Лабораторная работа № 2
- •Лабораторная работа № 3 Алгоритмы базовых и улучшенных сортировок. Порядковые статистики.
- •Часть I (пункты 3÷6)
- •Часть II (пункты 7÷10)
- •Лабораторная работа №4 Полустатические структуры данных
- •Контрольные вопросы
- •Лабораторная работа № 5
- •Динамические структуры данных односвязные и двусвязные списковые структуры
- •Контрольные вопросы
- •Лабораторная работа № 6
- •Деревья , как динамические структуры данных .
- •Лабораторная работа № 7
- •Алгоритмы метода перебора с возвратами - (мпв), "жадные" алгоритмы.
Контрольные вопросы
Принципы работы структуры данных – очереди.
Алгоритмы основных операций для работы с линейной очередью.
Что такое кольцевая очередь? Сколько параметров очереди необходимо фиксировать для работы с ней?
Для какой структуры данных должен быть реализован принцип LIFO (last in, first out)?
Что такое дек, ограниченный дек?
Организация строк какой структуры реализована средствами Object Pascal?
Лабораторная работа № 5
(4 часа)
Динамические структуры данных односвязные и двусвязные списковые структуры
Цель работы:
Изучение организации списковых структур и построение реальных структур данных на базе списков.
Домашнее задание:
1. Освоить организацию адресного типа (указатели) в Object Pascal и построение динамического списка.
2. Изучить алгоритмы. Позволяющие работать со списковыми структурами различной организации:
а) линейный и кольцевой стек;
б) линейная и кольцевая очередь;
в) дек.
Порядок выполнения работы
1. Открыть проект Delphi Stuctures.
2. На главной форме в главное меню проекта добавить пункт «Лабораторная работа №5», при выборе которого должно появляться окно модуля «DinamicStuct». Для этого модуль DinamicStuct с формой добавить в проект.
3. Установить на форму модуля DinamicStuct компоненты, обеспечивающие ввод исходных данных и вывод результатов работы программы в соответствии с вашим вариантом задания (табл. 5.1), а также управляющую кнопку для запуска программного кода при нажатии на кнопку (событие onClic) в работающей программе. Для ввода и вывода в этих задачах использовать компоненты класса Tmemo.
4. В обработчике события onClic управляющей кнопки написать программный код, моделирующий работу структуры данных динамического характера, соответствующей заданию вашего варианта.
5. отладить приложение на тестовых примерах и продемонстрировать работу смоделированной структуры данных преподавателю.
6. Составить отчет о выполненной лабораторной работе, в который должны войти:
а) задание, в соответствии с вариантом;
б) блок-схема решения задачи;
в) программа решения задачи;
г) распечатка формы с демонстрацией работы смоделированной структуры данных.
7. Защитить работу преподавателю.
Таблица 5.1
№ вар. |
Содержание задания |
1. |
Организовать программно линейный односвязный список следующей структуры: Опишите в программе запись, в полеbukv которой заносится буква. Порождая записи, поместить их в стек, а затем «вытолкнуть» их из списка, получив буквы в порядке, обратном исходному. Проверьте работу примера для исходного набора букв: const A: array [1 .. 9] of char =(‘A’, ’P’, ‘Y’, ‘T’, ‘K’, ‘Y’, ’P’, ‘T’, ‘C’).
|
2. |
С помощью стека, организованного в соответствии со структурой вар. 1 организовать получение палиндрома, в котором вторая половина является зеркальным отражение первой без последнего символа. Первую половину вводить с клавиатуры. Например: |
3. |
Программно организазать очередь в виде однонаправленого списка из элементов типа rec: Type ptr =^ rec; rec = record key : integer; s : ptr; end; var t : rec; Заполняются ссылки на первое ипоследнее звенья списка. Во входном файле задана последовательность из равного количества положительных и отрицательных целых чисел, за которой следует нуль. Ввести эти числа и вывести их, чередуя положитедльные числа (на нечетных местах) с отрицательными ( на четных), причем исходный взаимный порядок как среди положительных, так и среди отрицательных чисел должен быть сохранен. |
4. |
Многочлен P(х) = anxn + an-1xn-1 +… + a1x + a0 с целыми коэффициентами можно представить в виде списка, элементы которого расположены по убыванию степеней одночленов: Описать на Object Pascal тип данных, соответствующий такому представлению многочленов, и определить следующие функции и процедуры для работы с этими списками-многочленами: а) логическую функцию Equal(p,q), проверяющую на равенство многочлены p и q; б) функцию Value(p,x), вычисляющую значение p в точке x; в) процедуру Dif(p,q), которая строит многочлен p-производную многочлена q; г) процедуру Addit(p,q,r), которая строит многочлен p-сумму многочленов q и r. |
5. |
Кольцевым списком называется однонаправленный список, в последнем звене которого вместо Nil указывается ссылка на первое звено: Пусть L кольцевой список с элементами типа Type prt =^ rec rec = record; key : integer; s : ptr; end; а E величина типа rec.
Описать и отладить: а) процедуру, которая строит кольцевой список L и выводит в компонент класса TstringGrid таблицу: t1 t2 … tn-1 tn t2 t3 … tn t1 t3 t4 … t1 t2 -- - - - - - - - - - tn t1 … tn-2 tn-1
б) процедуру, которая строит кольцевой список L и функцию, которая удаляет из непустого списка L последний элемент. в) процедуру, которая строит кольцевой список L и функцию, которая добавляет в конец списка L новый элемент. |