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

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

Итак, вот как я понимаю, что такое структура данных.

Это может быть глупый пример, но позже вы поймете, почему я использую его в качестве примера.

Допустим, вы устраиваете вечеринку для своей кошки, и каждый человек, который придет на вашу вечеринку, принесет кошку с именной биркой. Итак, давайте возьмем пример с пятью кошками.

Попо, Момо, Моти, Личи и Чонки

Эти пять кошек теперь в компьютерных науках считаются данными, и то, как мы размещаем их в нашей комнате для вечеринок, считается структурированными данными.

Здесь мы придумали, как разумно хранить всех наших кошек в коробке. Мы создаем длинную коробку со множеством коробок внутри, имеющих одинаковый размер 5x5 дюймов. Эти ящики заранее расставлены в определенном порядке, так что если вы скажете ящик номер 1, вы точно знаете, где его найти. Поэтому каждый раз, когда кто-то приходит на вечеринку, он кладет свою кошку в одну из этих пронумерованных коробок. Сюрприз! Вы только что воссоздали структуру данных под названием Массив.

Вот еще одна идея у вас есть. Вместо скучной коробки с коробками вы можете придумать кошачий поезд!

Теперь вы создаете цепочку из отдельных ящиков, соединенных нитями. Таким образом, Попо будет связан с Момо нитью, а Момо будет связан с Моти ниткой и так далее. Этот тип структуры данных называется Связанный список.

Таким образом, возникает естественный вопрос: "Какое размещение/структура данных кошки лучше?"

Как и все в жизни, ответ таков: это зависит от ситуации.

Каждая структура данных имеет свои преимущества и недостатки.

Сценарий 1. Допустим, вы один из владельцев кошек и ищете свою кошку Чонки, которая оказалась 90-й, присоединившейся к вечеринке.

Учитывая структуру данных массива, поскольку все блоки находятся в одном блоке и все имеют одинаковую длину 5 дюймов, вы можете пройти 5x90 = 450 дюймов блоков и найти Чонки.

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

В этом случае Array является структурой данных победителя для поиска подходящего кота.

Сценарий 2. Допустим, вы ожидаете, что на вечеринку придет 100 кошек. Однако вечеринка стала настолько популярной и известной, что на ней появились сразу пять котов знаменитостей! Как же ты тогда умудришься втиснуть их в дом?

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

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

Следовательно, если количество нежданных гостей варьируется от 5 до 1000 кошек, Linked List становится очень удобным в использовании, потому что его размер намного проще изменить, чем Array.

Связанный список выходит победителем.

Как разработчик программного обеспечения, важно понимать структуру данных и то, как мы можем их использовать, чтобы наилучшим образом соответствовать различным ситуациям. Понимание структуры данных — это первый шаг к эффективному созданию приложения, а понимание алгоритма — второй шаг. Для более глубокого понимания алгоритма я настоятельно рекомендую прочитать Эрик Ким и Даниэла Сандовал — очень мемный и простой для понимания пост об алгоритме и нотации Big O.