О структурах данных
hardsign — 04.07.2023Когда детей учат программировать, им рассказывают о разных структурах данных. Многим для того, чтобы понять смысл структуры, надо привести аналог из реального мира.
Вот, например, простая переменная. Она похожа на листок бумаги, куда ты быстренько что-нибудь записываешь.
А вот – массив. Это уже стопка листков, которая на столе занимает места столько же, сколько один листок. Здесь, чтобы добраться до значения, необходимо не только ухватить всю стопку, но и знать номер листка в стопке. Хотя правильнее работать в цикле со всей стопкой сразу.
Вот – таблица. Это тетрадка в клетку или бухгалтерский гроссбух. Много-много одинаковых записей, каждая из которых состоит из одних и тех же элементов: когда потрачено, сколько потрачено, на что потрачено.
Вот – ассоциативный массив. Это уже библиотечная картотека, где по названию книги можно найти полную информацию об этой книге, включая место на полке, где она стоит. Книги ведь не обязаны стоять на полках по названиям?
А вот – однонаправленный список. Это... что это?
А вот вам аналогия для однонаправленного списка. Допустим, вам нужна некая информация или некая услуга. Вы находите телефон, по которому можно эту информацию получить, и звоните. А вам говорят: «Нет, мы не знаем, позвоните по номеру 1-11-11». Звонишь по номеру 1-11-11, а там говорят: «Нет, это не мы, это 2-22-22». И так далее.
В процессе вам могут дать номер, по которому вы уже звонили – это значит, список циклический. Могут сказать, что вообще ничего не знают, что это квартира Мойдодыра, и вообще послать вас не по цифровому, а по буквенному адресу. Это значит, что в очередном указателе на следующий элемент оказался NULL. Может, вам надоест звонить, и вы придумаете, как обойтись без этой информации. Это значит, что длина поиска превысила программное ограничение. Но может случиться и такое, что рано или поздно вы найдёте искомую информацию...
Дерзайте!
|
</> |