Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на билеты.docx
Скачиваний:
5
Добавлен:
07.12.2018
Размер:
144.65 Кб
Скачать

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.