Введение в структуры данных и абстрактные типы данных

Что такое структуры данных?

В информатике структуры данных - это особые форматы, используемые при организации, управлении и обработке данных. Есть много структур данных, которые сильно различаются по сложности. По сути, структура данных существует для хранения информации и создания пути для ее эффективного извлечения и использования. Некоторые структуры данных, которые вы, возможно, видели раньше, - это массивы, хеш-таблицы, связанные списки, деревья и графики.

Что такое стек?

Стеки - это структуры, соответствующие принципу Last-In-First-Out (LIFO). Представления реального мира повсюду, при мытье посуды или складывании полотенец все, что можно сложить, будет разложено, начиная с объекта, который был помещен наверх последним. Первый элемент в стеке будет последним элементом, использованным в стеке. Массивы, а также асинхронные запросы в JavaScript используют этот порядок операций при выполнении.

Что такое очередь?

Очередь можно представить как инверсию стека. Очереди соответствуют принципу «первым пришел - первым обслужен» (FIFO). Также хорошо представлен в реальной жизни: каждый раз, когда вы стоите в очереди за службой, вы ожидаете двигаться в одном направлении к началу очереди. Массивы можно использовать для реализации очередей в JavaScript.

Как я могу использовать стеки и очереди в JavaScript?

При использовании массива в качестве стека JavaScript предоставляет методы push () и pop (). Чтобы продемонстрировать варианты использования:

// устанавливаем стек переменных в массив чисел

пусть stack = [0, 1, 2, 3, 4, 5];

// чтобы удалить элемент из вершины стека, мы будем использовать метод pop ()

stack.pop () // число 5 будет удалено из вершины стека

console.log (стек) // [0, 1, 2, 3, 4];

// чтобы добавить элемент в верх стека, мы будем использовать метод push ()

stack.push (9) // число 9 будет добавлено в верх стека

console.log (стек) // [0, 1, 2, 3, 4, 9]

У нас есть аналогичные варианты использования массива в качестве очереди в JavaScript с помощью методов push () и shift ().

// устанавливаем переменную очередь в массив чисел

пусть queue = [0, 1, 2, 3, 4, 5];

// чтобы удалить элемент из передней очереди, мы будем использовать метод shift ()

queue.shift () // число 0 будет удалено из передней очереди

console.log (очередь) // [1, 2, 3, 4, 5];

// чтобы добавить элемент в конец очереди, мы будем использовать метод push ()

queue.push (6) // число 6 будет добавлено в конец очереди

console.log (стек) // [1, 2, 3, 4, 5, 6]

Почему?

Предыдущие примеры могут показаться мрачными, скучными или унылыми, но по мере того, как данные становятся более сложными, их будет чрезвычайно важно знать и понимать, чтобы эффективно перемещать данные. При использовании стеков и очередей наш компьютер перебирает каждый элемент в массиве, повторно индексируя эти элементы, что приводит к большей временной сложности. Связанные списки обычно являются лучшим выбором при работе с большими объемами данных. Они обеспечивают более простой доступ для прямого перемещения элементов без необходимости повторно индексировать массив.

Связанные списки: обзор

Разработчик JavaScript на любом уровне может оценить полезность массива. Однако по мере того, как приложения становятся более сложными, вставка и удаление элементов, в частности, становится все более эффективным с использованием связного списка. Анатомия связного списка - это либо узел, который указывает на другой узел в одном направлении, либо узел, который указывает непосредственно позади и прямо перед собой. Эта цепочка эффективна для перемещения вперед и назад без необходимости переиндексировать коллективные данные. Стеки и очереди - это шаблоны, которые можно увидеть и использовать как в массивах, так и в связанных списках.

Я всегда рада подключиться, вы можете найти меня в Twitter, LinkedIn или в моем портфолио!

Источники / ссылки: