- •1 Вопрос
- •2 Вопрос
- •3 Вопрос
- •4 Вопрос
- •5 Вопрос
- •6 Вопрос
- •1. Презентация, сопровождающая выступление докладчика.
- •2. Презентация, содержащая значимую информацию и сопровождаемая докладчиком.
- •7 Вопрос
- •8 Вопрос
- •9 Вопрос
- •10 Вопрос
- •11 Вопрос
- •12 Вопрос
- •13 Вопрос
- •14 Вопрос
- •15 Вопрос
- •16 Вопрос
- •17 Вопрос
- •18 Вопрос
- •19 Вопрос
- •20 Вопрос
- •21 Вопрос "Форматирование отдельных элементов текста"
- •22 Вопрос
- •23 Вопрос
- •24 Вопрос
- •25 Вопрос
- •26 Вопрос
25 Вопрос
Классификация структур данных м.б. выполнена по различным признаками.
1) По сложности: простые иинтегрированные. Простые (базовые, примитивные) структуры - это такие, которые не могут быть распределены на составные части. Структурированные (интегрированные, композитные, сложные) - такие структуры данных, составными частями которых есть другие структуры данных - простые ли, в свою очередь, интегрированные. Интегрированные структуры данных конструируются программистом.
2). По способу представления: физическая и логическая. Физическая структура данных - это способ физического представления данных в памяти компьютера. Логическая или абстрактная структура - это рассмотрение структуры данных без учета его представления в машинной памяти. В общем случае между логической и соответствующей ей физической структурами существует расхождения, степень которого зависит от самой структуры и особенностей той среды, в котором она должна быть отображенной. Вследствие этого расхождения существуют процедуры, которые осуществляют отображение логической структуры в физическую, и, наоборот, физической структуры в логическую.
3). По наличию связей между элементами данных: несвязные и связные. Несвязные структуры характеризуются отсутствием связей между элементами структуры. Связные структуры характеризуются наличием связи. Примерами несвязных структур есть векторы, массивы, строки, стеки, очереди; примеры связных структур - связные списки.
4). По изменчивости: статические, полустатические, динамические. Изменчивость, то есть изменение числа элементов и (ли) связей между элементами структуры. Статические - к этой группе относят массивы, множества, записи, таблицы. Полустатические - это стеки, очереди, деки, дерева. Динамические - линейные и разветвленные связные списки, графы, дерева.
5). По характеру упорядоченности элементов в структуре: линейные и нелинейные. Линейные структуры в зависимости от характера взаимного расположения элементов в памяти разделяют на структуры с последовательным распределением элементов в памяти (векторы, строки, массивы, стеки, очереди) и структуры с произвольным связным распределением элементов в памяти (односвязные и двусвязные линейные списки). Нелинейные структуры - многосвязные списки, дерева, графы.
6). По виду памяти, используемой для сохранности данных: структуры данных для оперативной и для внешней памяти. Структуры данных для оперативной памяти - это данные, размещенные в статической и динамической памяти компьютера. Все вышеприведенные структуры данных - это структуры для оперативной памяти. Структуры данных для внешней памяти называют файловыми структурами или файлами. Примерами файловых структур есть последовательные файлы, файлы, организованные разделами, В- деревья.
Тип данных однозначно определяет:
а) структуру хранения данных указанного типа, то есть распределение памяти и представления данных в ней, с одной стороны, и интерпретацию двоичного представления, из другого; б) допустимые значения, которые может иметь объект описываемого типа; в) допустимые операции, которые могут быть применимые к объекту описываемого типа.
Адресный тип данных
Указатели применяются для работы с массивами, со свободной памятью и в качестве параметров функции. Указатели - это тип данных, значение которого является адресс данных определенного типа. Бывают и безтиповые указатели, которые хранят просто адресс памяти, но в C++ применяются редко. Значение указателя можно получить: a) определив, где расположена в памяти для хранения значений. б) выделив участок свободной памяти некоторая переменная; в) при помощи арифметической операции над целым числом и другим указателем. Синтаксис определения указателя следующий вид: тип *имя; где тип - тип значений, на которые сможетуказывать указатель; имя - имя переменного указателя. Примеры определений указателей. int* pn; // указатель на целое значение float *pf1, *pf2; // два указателя на вещественные Новому типу можно дать собственное имя при помощи инструкции typedef. Пример объявления типа. typedef int* integer_p; integer_p pn; Существует лишь одна адрессная константа 0, которая означает, что указатель никуда не указывает. Указателю нельзя присвоить, но можно добавить целое значение. pn = 0; // допустимо, 0 означает пустой указатель pn = 1; // не допустимо pn += 3; // тоже допустимо, но не всегда корректно Смысл выражения pn + 3 в том, что к адресу, хранящемуся в pn, добавляется утроенные размер базового типа, в данном случае типа int.