С таблицами данных мы тоже хорошо знакомы, достаточно вспомнить всем известную таблицу умножения. Табличные структуры отличаются от списочных тем, что элементы данных определяются адресом ячейки, который состоит не из одного параметра, как в списках, а из нескольких. Для таблицы умножения, например адрес ячейки определяется номерами строки и столбца. Нужная ячейка находится на их пересечении, а элемент выбирается из ячейки.
При хранении табличных данных количество разделителей должно быть больше, чем для данных, имеющих структуру списка. Например, когда таблицы печатают в книгах, строки и столбцы разделяют графическими элементами — линиями вертикальной и горизонтальной разметки (рис. 1.10).
Город | Население 1850 | Население 1900 | Население 1950 | Население 1980 |
Нью-Йорк | 3 437 202 | 7 891 957 | 7 071 639 | |
Лос-Анжелес | 1 610 | 1 970 358 | 2 966 850 | |
Чикаго | 1 698 575 | 3 620 962 | 3 005 072 | |
Хьюстон | 596 163 | 1 595 138 | ||
Филадельфия | 121 376 | 1 293 667 | 2 071 605 | 1 688210 |
Рис. 1.10. В двумерных таблицах, которые печатают в книгах, применяются два типа разделителей — вертикальные и горизонтальные.
|
|
Если нужно сохранить таблицу в виде длинной символьной строки, используют один символ-разделитель между элементами, принадлежащими одной строке, и другой разделитель для отделения строк, например, так:
Нью-Йорк*696115*3437202*7891957*7071639#Лос-Анжелес*1610*102479* 1970358*2966850
Для розыска элемента, имеющего адрес ячейки (т, n), надо просмотреть набор данных с самого начала и пересчитать внешние разделители. Когда будет отсчитан m -1 разделитель, надо пересчитывать внутренние разделители. После того как будет найден n -1 разделитель, начнется нужный элемент. Он закончится, когда будет встречен любой очередной разделитель.
Еще проще можно действовать, если все элементы таблицы имеют равную длину. Такие таблицы называют матрицами. В данном случае разделители не нужны, поскольку все элементы имеют равную длину.
Таким образом, табличные структуры данных (матрицы) — это упорядоченные структуры, в которых адрес элемента определяется номером строки и номером столбца, на пересечении которых находится ячейка, содержащая искомый элемент.