Добро пожаловать в мой пост о понимании основ структур данных!
Здесь мы рассмотрим базовый обзор концепций, которые вам необходимо изучить, чтобы начать осваивать структуры данных.
Массив
Массив — это просто список чего-то, окруженный символом []
, и может содержать различные типы данных.
Простейшая структура данных, массив служит основой для структур данных, которые мы рассмотрим далее в блоге. Вот пример массива:
Shopping List: Chips, Steak, Broccoli, Milk, Eggs
let shoppingList = ["Chips", "Steak", "Broccoli", "Milk", "Eggs"]
Для добавления элементов в массив не существует строгих правил, но они есть для других структур данных, которые мы рассмотрим.
Очередь
Очередь похожа на массив, она представляет собой список, но при добавлении или удалении элементов в очереди действует правило «первый вошел — первый вышел».
По сути, первый элемент, который мы добавляем в очередь, будет также первым элементом, который будет удален из очереди.
Мне нравится думать об очередях как о конвейерных лентах в продуктовом магазине. Первое, что мы положим на ленту из нашей тележки, будет первым, что проверит продавец!
Стек
Также похож на массив и является аналогом очереди, но разница между этими типами данных и стеком заключается в том, что он следует правилу «первый вошел, последний вышел». Это означает, что первый элемент, добавленный в стек, будет последним элементом, удаленным из него.
Мне нравится думать о стеке как о стопке тарелок, где первая добавленная тарелка находится внизу, а последняя — наверху.
Связанный список
Дальше все становится немного мутным, начиная со связных списков.
В связных списках есть элемент (или узел), в котором есть переменная, указывающая на другой элемент в памяти. Таким образом, вместо использования массива для хранения всех данных, эти элементы соединяются друг с другом с помощью собственной переменной-указателя, которая связывает их друг с другом.
Связные списки бывают двух видов: односвязные и двусвязные.
Односвязные списки имеют головной элемент, который указывает на следующий элемент, на следующий элемент и так далее, пока не будет достигнут элемент, указатель которого установлен на NULL
. Двусвязные списки означают, что каждый элемент имеет следующий и предыдущий указатели на соответствующие следующий/предыдущий элементы.
Деревья
Подобно связанным спискам, деревья представляют собой структуру данных, элементы которой указывают друг на друга в памяти. Однако вместо следующего/предыдущего элементов, указывающих на элемент, деревья имеют левый/правый дочерний элемент. Эти дочерние элементы и создают древовидную структуру.
Самая сложная для понимания структура данных, но при правильной реализации она может обеспечить высокую производительность и дать вам преимущество в процессе собеседования!
Заключение
Эта статья лишь поверхностно коснулась структур данных, но это должно заставить вас начать изучать и, в конечном итоге, применять их в своей повседневной работе! Есть и другие (и более продвинутые) структуры данных, с которыми вы столкнетесь на своем пути разработчика. Удачи вам в дальнейшем!
Источники
Гик для гиков