24
3.4 СТРУКТУРЫ ДАННЫХ
Задачи, решаемые на ЭВМ — это математические модели процессов или явлений
реальной жизни, в которых отражены наиболее существенные связи между реальными
объектами. Модели реальных объектов вместе с присущими им связями образуют
структуры данных. При решении задачи на ЭВМ структуры алгоритмов отображаются на
структуру машинного языка, а структуры данных отображаются на структуру машинной
памяти. Память ЭВМ имеет дискретную структуру и состоит из линейной
последовательности элементов, называемых ячейками. Каждая ячейка может содержать
одно значение — машинное слово.
Простые переменные описывают структуры, состоящие из одного элемента,
поэтому каждая простая переменная характеризуется одним значением. При отображении
на память ЭВМ имени простой переменной ставится в соответствие номер ячейки памяти,
в которой хранится значение этой переменной.
Иногда значение простой переменной занимает более одной ячейки, например значение
переменной с двойной точностью; такие случаи специально оговариваются в языках
программирования.
Массив — структура, состоящая из множества элементов, упорядоченных в
соответствии со значениями индексов. В зависимости от числа индексов различают
массивы одномерные, двумерные и т. д.
Значения элементов одномерного массива хранятся в памяти в виде
последовательности, при этом индекс элемента массива означает номер ячейки памяти, в
которой хранится значение этого элемента, относительно номера той ячейки памяти, в
которой хранится значение первого элемента этого массива. Так как структура
одномерного массива однозначно соответствует структуре памяти ЭВМ, то отображение
других структур данных на память ЭВМ соответствует отображению этих структур на
одномерный массив. Массив как структура данных характеризуется тем, что с помощью
индексов обеспечивается прямой доступ к любому элементу массива. Операции выбора
элемента массива или записи в массив сводятся к вычислению значений индексов.
Очередь — структура данных, организованная по принципу «первым пришел —
первым ушел». Это динамическая структура, число элементов которой может меняться в
процессе обработки. Обработка элементов очереди ведется последовательно один за
одним. Элемент, который первым попал в очередь, первым и обрабатывается и при этом
покидает очередь. Добавление новых элементов производится в конец очереди.
Стек — структура данных, организованная по принципу «последним пришел —
первым ушел». В стеке в отличие от очереди доступен только один элемент, называемый
вершиной стека. При записи в стек очередной элемент заносится в его вершину, а
остальные элементы продвигаются вниз без изменения порядка. При выборке из стека
выбирается элемент из его вершины, а все остальные элементы без изменения порядка
сдвигаются вверх, так что в вершину попадает элемент, поступивший в стек
предпоследним. Стек можно отобразить на одномерный массив. При записи в стек
указатель вершины (индекс массива) будет сдвигаться в сторону конца массива, при
чтении из стека — перемещаться в сторону начала массива. Значение i = 0 перед чтением
из стека служит признаком того, что стек пуст, а значение i = n (n — размерность массива)
перед записью в стек — признаком того, что стек переполнен. Стек удобен для
вычисления значения арифметического выражения, представленного в обратной польской
(бесскобочной) записи.
Строка — последовательность символов из некоторого алфавита. Основные
операции, выполняемые над строками:
• последовательный перебор символов строки;
• включение в строку нового символа;
• исключение из строки заданного символа;
• включение или исключение группы подряд идущих символов (подстроки).