- •Конспект лекций по курсу
- •Абстрактные структуры данных
- •Определение
- •Базовые структуры данных
- •Очереди и стеки
- •Деревья
- •Внутренние структуры данных
- •Отображение абстрактных структур данных на внутренние
- •Строка-вектор
- •1. Функция сцепления двух строк
- •2. Функция поэлементного сравнения двух строк
- •3. Функция разбиения строки.
- •4. Функция нахождения подстроки в строке
- •Строка-список
- •1. Сцепление двух строк
- •2. Поэлементное сравнение двух строк
- •3. Разбиение строки на части
- •4. Функция нахождения подстроки в строке
- •Стек-вектор
- •Стек-список
- •Очереди
- •Очередь-вектор
- •Очередь-список
- •Деревья
- •Классификация таблиц
- •Способ работы с таблицей
- •Способ доступа к таблице
- •Просматриваемые таблицы
- •Статическая просматриваемая таблица-вектор
- •Динамическая просматриваемая таблица-вектор
- •Просматриваемая таблица-список
- •Упорядоченные таблицы
- •Упорядоченная таблица-вектор
- •Динамическая упорядоченная таблица – вектор
- •Упорядоченная таблица – двоичное дерево
- •Перемешанные таблицы
- •Открытое перемешивание
- •Перемешивание сцеплением
Алгоритмы и структуры данных
Конспект лекций по курсу
«АЛГОРИТМЫ И СТРУКТУРЫ ДАННЫХ»
Автор: доцент Шустова Л.И.
Структуры данных
Уровни представления информации
Любая программа реализует обработку информации, предполагающую преобразование некоторой входной информации в выходную. С точки зрения программирования информацию, подлежащую обработке, обычно определяют какданные. Отсюда, любая программа реализуетобработку данных.
Под даннымиобычно понимают любой набор знаков, рассматриваемый безотносительно к его содержательному смыслу. С точки зрения программирования данные можно рассматривать как совокупность некоторых информационных единиц (элементов), между которыми существуют определенные отношения. Эти отношения представляют собойструктуру данных.
Когда программист приступает к разработке некоторого программного продукта, существенной частью его работы является осознание свойств информации, которая будет обрабатываться. В процессе разработки программного продукта и осознания свойств информации достаточно четко выделяются три уровня абстракции в представлении информации:
Интуитивныеструктуры информации – это внутренне присущая самой информации характеристика, отражающая смысл данных. Программист пытается осознать эту характеристику, выделить и применить к ней имеющиеся у него схемы. Интуитивные структуры информации принято делить на два типа: иерархическую и ассоциативную.
В иерархическойструктуре можно с той или иной степенью точности выделить отношения подчинения одной части или элемента информации другой.
В ассоциативнойструктуре существуют более сложные взаимосвязи, и установить отношение подчиненности, разделить информацию на отдельные элементы не всегда возможно.
Абстрактныеструктуры информации – это тот или иной формальный способ интерпретации интуитивной структуры. Без такой формализации невозможно представить в программных продуктах требуемую информацию. Для представления одной и той же интуитивной структуры могут быть использованы различные абстрактные структуры – естественно, с разной степенью точности.
В интуитивных структурах содержится много информации. Отобразить всю эту информацию в абстрактных структурах часто не представляется возможным, так как это может привести, с одной стороны, к серьезному усложнению структуры данных и, соответственно, усложнению программного продукта, а с другой стороны, к хранению информации, обработка которой в данном конкретном программном продукте не требуется. Поэтому в каждом конкретном случае необходимо решать, насколько подробно в абстрактной структуре данных должна быть представлена интуитивная структура, и как организовать доступ к любой части информации. Чтобы принять такое решение, необходимо знать, какие операции будут выполняться с данными. Поэтому в связи с каждой задачей необходимо рассматривать не только организацию данных, но и класс операций, выполняемых с этими данными; все это вместе и определяет структура данных.
Конкретныеструктуры информации – это способы представления соответствующих абстрактных структур в памяти ЭВМ.
Абстрактные структуры называют также логическимиструктурами или простоструктурами данных; конкретные структуры называют ещевнутреннимиструктурами.
В процессе разработки программного продукта разработчик на разных этапах разработки имеет дело с разными типами информационных структур: на этапе анализа – с интуитивными структурами информации, на этапе проектирования – с абстрактными структурами и на этапе реализации – с конкретными структурами.
В дальнейшем будут рассматриваться абстрактные и конкретные структуры данных.