Если вы пользуетесь каким-либо современным устройством, вы, вероятно, сталкивались со стековыми операциями, даже если не осознавали этого. Стеки играют фундаментальную роль во многих задачах программирования, от управления вызовами функций до возможности отмены операций.
Стеки представляют собой линейную структуру данных, которая соответствует порядку операций, организующих данные в структуре LIFO или FILO.
LIFO: Последний пришёл, первый ушёл.
ФИЛО: Первый пришёл, последний ушёл.
Стеки используются для выполнения операций над коллекцией элементов, таких как добавление и удаление элементов, отображение верхних элементов и отображение того, пуста коллекция или полна.
Например:
Когда вы в данный момент посещаете сайт www.ESPN.com в веб-браузере и случайно нажимаете на рекламу билетов на бейсбол в Чикаго Уайт Сокс. Мы пополнили нашу стопку, возможно, не намеренно, но теперь она находится на вершине нашей стопки. Затем мы понимаем, что «Чикаго Уайт Сокс» проиграли 15 игр подряд. Что ж... давайте нажмем кнопку «Назад» (удалив этот элемент с вершины стека).
Да, вот этот. Это демонстрирует принцип LIFO в операциях со стеками: мы оставляем (удаляем) последнюю посещенную страницу из нашей истории (или стеков), чтобы вернуться на www.ESPN.com... возможно, в следующем году White Sox's.
Операции со стеками часто используются в приложениях, которым необходимо поддерживать порядок истории веб-браузера, отменять и повторять действия в текстовых редакторах, а также в стеках вызовов функций, и это лишь некоторые из них.
При изменении стеков обычно используются следующие функции:
.Нажмите =, чтобы добавить элемент в стек.
.pop = удалить верхний элемент из стека.
.peek = для отображения верхнего элемента стека.
.length/.size = для определения общего количества индексов в стеке. Javascript использует (.length)
.isEmpty = проверяет, пуст ли стек.
.isFull = проверяет, заполнен ли стек; если массив имеет фиксированный размер.
Структура данных Stacks может быть создана с помощью класса stacks или обычного массива.
Реализация стеков без класса:
При выполнении операций со стеками без класса stacks мы имитируем операции со стеками с помощью массива.
Ниже будет приведен пример использования операций со стеками для обращения массива чисел. Я буду использовать JSON.stringify для сравнения значений результата массива с результатом массива желаний.
Бывший:
// Reverse an array using stack operations let number = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; // original array let numberList = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]; // reversed array let ordernumberList = []; // array to store the reversed order // Loop through the numberList array to reverse its order for (var i = 0; iЯ хочу выделить оператор if-else в самом конце. Я использовал метод JSON.stringify для сравнения двух массивов, потому что без него сравнение вернуло бы false, вызывая условие else, даже если массивы имеют идентичное содержимое. Это происходит потому, что при сравнении массивов в JavaScript сравнение проверяет их ссылки (т. е. их местоположения в памяти), а не фактическое содержимое внутри массивов.
Как мы видим на протяжении всего цикла for, наш метод .pop (удаляет) первым индексом в массиве NumberList (LIFO). Затем с помощью метода .push добавьте его в новый массив ordernumberList, перевернув исходный массив.
FILO входит в новый массив, сформулированный так, что первые индексы, помещенные в массив ordernumberList, будут последними (FILO), если они когда-либо будут изменены с помощью операций со стеками.
В этой статье мы рассмотрели, как работают стеки, используя принципы LIFO и FILO, реализовали операции со стеком в JavaScript. Понимание стеков необходимо для многих задач программирования, как это видно из реальных сценариев, таких как просмотр веб-страниц.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3