Что такое структура данных?
Я всегда считал, что термин «структура данных» сбивает с толку. Какого черта это? Это данные со структурой, что является столь же неоднозначным термином?
Когда я делился своим недоумением с коллегами, они быстро выдавали «данные со структурой». Выражение удовлетворения на их лицах заставляло меня сомневаться. Я думаю, это все, что мне нужно было знать ….
В конце концов, я научился разрешать концепцию структуры данных с помощью простого перефразирования термина «структура данных» в «структуру данных». В этом контексте фокус смещается с данных (вещи) на структуру (организацию). Это тонкая, но чрезвычайно важная деталь. Другими словами, мы фокусируемся не на вещах, а на процессе организации вещей.
Давайте представим, что мы обсуждаем книги. Что имеет больше смысла: книги со структурой или организацией книг? На мой взгляд, последнее легче понять. Основное внимание уделяется организации, а не книгам.
Различные типы структур данных
Книги, подобные данным, могут быть организованы разными способами. Давайте представим, что у нас 20 книг. Как мы их организуем?
Если мы хотим быстро найти книгу, когда нам нужна ссылка на нее, мы можем вставить все наши книги в алфавитном порядке на полке; каждый раз, когда нам нужна книга, мы можем найти ее, используя наши знания о том, что книги хранятся в алфавитном порядке.
Если мы хотим прочитать все наши книги в определенном порядке, возможно, от первой книги, которую мы вставили в нашу коллекцию, до последней книги, которую мы вставляем, то мы бы хотели разместить наши книги в последовательности с этим порядком; более того, мы хотим ограничить чтение наших книг только в таком порядке.
Если нам не хватает места для хранения всех наших книг в одной комнате, возможно, мы хотим организовать наши книги таким образом, чтобы мы могли быстро их найти. Как насчет размещения наших 20 книг по всему дому, а затем создания списка из двух столбцов: в первом столбце указано название книги; во втором столбце указано местоположение книги.
В этот момент должно стать ясно, что существует много способов организации книг; кроме того, существует много различных типов структур данных. Структура данных, которую мы используем в веб-разработке, как и в нашем примере с книгами, зависит от наших потребностей.
Теперь, когда мы понимаем, что существует много типов структур данных для различных типов потребностей, нам необходимо понять, что мы можем использовать и создавать эти структуры данных без эзотерического знания кодирования. Мы все, даже те, у кого нет бороды, могут создавать структуры данных. Все, что нам нужно, это понимание повседневного JavaScript — примитивных типов (например, Boolean) и ссылочных типов (например, Object).
Если это трудно представить, не волнуйтесь. Раньше я думал о множестве, который является типом структуры данных, просто о множестве! О, как наивно, чо. Набор не вещь; Набор — это имя, присвоенное определенному способу организации данных. Что не менее важно, набор создается с использованием объектов.
Цель
Эта серия статей о структурах данных с JavaScript покажет, что структуры данных не должны быть непрозрачными и загадочными. Скорее они используются, чтобы сделать нашу жизнь проще. Я попытаюсь подкрепить эту точку зрения введением одной или двух очень похожих структур данных в каждой из статей этой серии.
Контур
Поскольку в этой серии слишком много структур данных, чтобы их можно было адекватно охватить, мы рассмотрим лишь несколько, но наиболее распространенных структур данных:
- Стек и Очередь
- Односвязный список и двусвязный список
- Дерево (Поиск в глубину и Поиск в ширину)
Вывод
Я надеюсь, что после завершения этой серии вы не только узнаете, как реализовать эти общие структуры данных, но и увидите, что они используются повсюду. Когда вы поймете, что эти структуры данных служат очень конкретной и полезной цели при организации всех данных, вы повысите свою признательность за них. Вы начнете думать по-другому о ваших данных и о том, как вы их организуете.