Однако, если мы соберем все листы книги в правильной последовательности, мы получим линейную структуру данных. Такую книгу можно читать, но для поиска нужной информации придется прочитать все страницы по порядку, что не всегда удобно. Для быстрого поиска данных используется иерархическая структура. Книги, например, разбиваются на части, разделы, главы и параграфы. Элементы структуры более низкого уровня входят в элементы структуры более высокого уровня: разделы состоят из глав, главы и параграфы. Рассмотрим, какие виды структур управления существуют.


Линейные структуры, такие как списки данных или векторы данных, представляют собой простые списки, где каждый элемент однозначно определяется своим номером в массиве. Например, обычный журнал посещаемости занятий имеет структуру списка, где студенты зарегистрированы под уникальными номерами.


При создании любой структуры данных важно решить два основных вопроса: каким образом разделить элементы данных и как эффективно их найти. В журнале посещаемости, например, это решается следующим образом: каждый новый элемент списка заносится с новой строки, то есть разделителем является конец строки. Таким образом, если нам нужно найти определенный элемент, мы можем обратиться к его номеру строки.


Номер строки – это простой и эффективный способ организации данных в списке. Однако, разделителем может быть и специальный символ, который не встречается в самих данных. В рассмотренном нами классном журнале мы можем использовать символ «*» в качестве разделителя:


1. Аистов Александр Алексеевич *


2. Бобров Борис Борисович *


3. Воробьева Валентина Владиславовна *



27. Сорокин Сергей Семенович


В этом случае, для поиска элемента с номером «n», мы начинаем просмотр списка с начала и считаем количество встреченных разделителей. Когда мы отсчитываем «n-1» разделителей, мы находим нужный элемент.


Табличные структуры данных, такие как таблицы и матрицы, представляют собой способ организации информации, где каждый элемент данных имеет свой адрес в виде координат ячейки. Важно различать их от списочных структур, где каждый элемент определяется своим порядковым номером.


Рассмотрим пример таблицы умножения. В этой таблице, адрес каждой ячейки определяется номером строки и номером столбца. Например, для умножения числа из 3-й строки на число из 4-го столбца, мы найдем ячейку, расположенную на пересечении этих строк и столбцов.


При хранении таких данных, важно использовать разделители, которые отделяют строки и столбцы друг от друга. Это облегчает поиск элементов по их адресам. Например, при использовании символьной строки для представления таблицы, мы можем разделить элементы одной строки одним символом-разделителем, а строки друг от друга – другим символом.


Для поиска элемента в таблице с адресом (m, n), мы начинаем просмотр таблицы с самого начала и считаем внешние разделители. Когда мы отсчитываем «m-1» разделитель, мы переходим к соответствующей строке. Затем мы считаем внутренние разделители, чтобы найти нужный столбец. Если все элементы таблицы имеют одинаковую длину, мы можем рассматривать ее как матрицу. В этом случае нам не нужны разделители, так как длина каждого элемента известна. Для поиска элемента с адресом (t, p) в матрице, мы используем формулу a [N (m -1) + (n -1)], где «а» – длина элемента, «N» – количество столбцов, а «m» и «n» – номер строки и столбца соответственно. Таким образом, табличные структуры данных (матрицы) позволяют упорядочить информацию, где каждый элемент имеет свой уникальный адрес. Многомерные таблицы представляют собой таблицы с более чем двумя измерениями. Рассмотрим пример таблицы, используемой для учета учащихся. В такой таблице каждый учащийся идентифицируется пятью параметрами: номер факультета, номер курса на факультете, номер специальности на курсе, номер группы в потоке одной специальности и номер учащегося в группе. Размерность такой таблицы равна пяти, и для доступа к информации об учащемся необходимо знать все пять параметров, то есть их координаты в таблице.