- •2. Структуры данных. Элементарные данные.
- •3. Линейные структуры данных. Массив.
- •4. Линейные структуры данных. Запись.
- •5. Линейные структуры данных. Множество.
- •6. Линейный однонаправленный список. Способы реализации и основные операции.
- •7. Линейный двунаправленный список. Способы реализации и основные операции.
- •8. Циклический однонаправленный список. Способы реализации и основные операции.
- •9. Циклический двунаправленный список. Способы реализации и основные операции.
- •10. Стек. Способы реализации и основные операции.
- •11. Очередь. Способы реализации и основные операции.
- •12. Дек. Способы реализации и основные операции.
- •13. Мультисписки. Способы реализации и основные операции.
- •14. Слоёные списки. Способы реализации и основные операции.
- •15. Графы. Способы реализации и основные операции.
- •16. Общие сведения о деревьях. Двоичные деревья. Основные определения и способы реализации.
- •17. Обходы деревьев.
- •18. Организация файлов. Общие сведения.
- •21. Методы разработки алгоритмов
- •22. Алгоритмы поиска в линейных структурах. Последовательный (линейный) поиск
- •23. Алгоритмы поиска в линейных структурах. Бинарный поиск
- •24. Хеширование данных. Функция хеширования
- •25. Хеширование данных. Открытое хеширование
- •26. Хеширование данных. Закрытое хеширование
- •27. Поиск данных по вторичным ключам
- •28. Упорядоченные деревья поиска. Способы реализации и основные операции
- •29. Случайные деревья поиска и оптимальные деревья поиска. Основные понятия
- •31. Поиск в тексте. Прямой поиск
- •32. Поиск в тексте. Алгоритм Кнута, Мориса и Пратта
- •33. Поиск в тексте. Алгоритм Боуера и Мура
- •34. Общие сведения об алгоритмах кодирования (сжатия) данных. Метод Хаффмана
- •35. Алгоритм внутренней сортировки подсчетом
- •36. Алгоритм внутренней сортировки простым включением
- •37. Алгоритм внутренней сортировки простым извлечением
- •38. Алгоритм внутренней сортировки методом пузырька
- •39. Алгоритм внутренней быстрой сортировки (Хоара)
- •40. Алгоритм внутренней сортировки слиянием
- •41. Алгоритм внутренней сортировки распределением
- •42. Алгоритмы внешней сортировки
- •43. Алгоритм определения циклов в графе
- •45. Алгоритмы обхода графа. Поиск в ширину (Волновой алгоритм)
- •46. Алгоритмы нахождения кратчайшего пути в графе. Алгоритм Дейкстры
- •47. Алгоритмы нахождения кратчайшего пути в графе. Алгоритм Флойда
- •49. Алгоритмы нахождения минимального остовного дерева графа. Алгоритм Крускала
4. Линейные структуры данных. Запись.
Запись – это агрегат, составляющие которого (поля) имеют имя и могут быть различного типа.
Рассмотрим пример простейшей записи:
type
TPerson = record
Name: string;
Address: string;
Index: longint;
end;
var
Person1: TPerson;
Запись описанного типа объединяет три поля. Первые два из них символьного типа, а третье – целочисленного.
В паскале определена операция присвоения для записей в целом (записи должны быть одного типа). Доступ к записи осуществляется через её имя.
Можно также выполнить операции над отдельным полем записи. Перечень таких операций определяется типом поля.
Доступ к полям отдельной записи осуществляется через имя записи и имя поля:
Person1.Index := 190000;
Person1.Name := ‘Иванов’;
Person1.Adress := ‘Москва, ул. Гарибальди, д.7’;
В памяти ЭВМ поля записи обычно располагаются непрерывно, в соседних ячейках. Размер памяти, занимаемой записью, есть суммарный размер полей, составляющих запись.
5. Линейные структуры данных. Множество.
Множество – совокупность каких-либо однородных элементов, объединённых общим признаком и представляемых как единое целое.
Тип множество соответствует математическому понятию множества в смысле операций, которые допускается над структурами такого типа. Множество допускает операции объединения множеств «+», пересечения множеств «*», разности множеств «-» и проверки элемента на принадлежность к множеству «in». Множества, также как и массивы, объединяют однотипные элементы. Поэтому в описании множества обязательно должен быть указан тип его элементов.
В отличии от массивов и записей здесь отсутствует возможность обращения к отдельным элементам. Операции выполняются по отношению ко всей совокупности элементов множества.
В памяти ЭВМ поля записи обычно располагаются непрерывно, в соседних ячейках.
6. Линейный однонаправленный список. Способы реализации и основные операции.
Список – это структура данных, представляющая собой логически связанную последовательность элементов списка.
Иногда бывают ситуации, когда невозможно на этапе разработки алгоритма определить диапазон значений переменной. В этом случае применяют динамические структуры данных.
Динамическая структура данных – это структура данных, определяющие характеристики которой могут изменяться на протяжении её существования.
Обеспечиваемая такими структурами способность к адаптации часто достигается меньшей эффективностью доступа к их элементам.
Динамические структуры данных отличаются от статических двумя основными свойствами:
В них нельзя обеспечивать хранение в заголовке всей информации о структуре, поскольку каждый элемент должен содержать информацию, логически связывающую его с другими элементами структуры;
Для ни зачастую не удобно использовать единый массив смежных элементов памяти, поэтому необходимо предусматривать ту или иную схему динамического управления памятью;
Для обращения к динамическим данным применяют указатели.
Созданием динамических данных должна заниматься сама программа во время своего исполнения.
Наиболее простой способ организовать структуру данных, состоящую из некоторого множества элементов – это организовать линейный список. При такой организации элементы некоторого типа образуют цепочку. Для связывания элементов в списке используют систему указателей, и в зависимости от их количества в элементах различают однонаправленные и двунаправленные списки.
В линейном однонаправленном списке любой элемент имеет один указатель, который указывает на следующий элемент в списке или является пустым.
Основные операции:
вставка элемента
просмотр
поиск
удаление элемента
При выполнении любых операций с линейным однонаправленным списком необходимо обеспечивать позиционирования какого-либо указателя на первый элемент. В противном случае часть или весь список будет недоступен.
