**Резюме**: изучение структуры данных стека очень важно, потому что оно используется во многих алгоритмах, мы собираемся изучить реализацию стека, и я надеюсь, что вы найдете это полезным.
— -
› что это такое?
› Предварительные условия
› Реализация
› Варианты использования
› Дополнительная информация
— -
Итак, во-первых, стек представляет собой структуру данных, которая следует принципу LIFO, что означает, что последний вошел первым, как вы понимаете, стек использует массив и в основном два метода: pop и push
- pop удалить первый элемент, который последним будет вставлен в список
- push добавить последний элемент в массив
![Описание изображения](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2xovh7aueiuagla3j559.jpg)
**Предпосылки**
- Знать JavaScript
- Ничего больше
Знайте, что пришло время кодировать, знайте, что у нас есть прочная основа стека, реализованного в js. Пойдем и возьмем.
```
let stack = [];
function push(num) {
stack.push(num);
console.log(stack);
}
function pop() {
stack.pop();
console.log(стек);
}
push(1);
push(2);
push(3);
push(4);
push(5);
поп();
```
Время взломать код и понять его ⛹🏿⛹🏿🏋🏿♂️🏋🏿
```
let stack = [];
```
объявить переменную и подписать ее в пустой массив
```
function push(num) {
stack.push(num);
console.log(stack);
}
```
Ну-ну. Я знаю, что сделал это с помощью функции, но здесь нет никаких проблем, я могу сказать, делай, как ты хочешь, позвольте мне ограничить ваше воображение. Я делаю простую реализацию, передавая число в качестве любого аргумента, а затем помещаю его в созданный нами стек.
```
function pop() {
stack.pop();
console.log(stack);
}
```
Я делаю то же самое, помните, что pop удаляет первый элемент, который был вставлен последним в списке.
```
push(1);
push(2);
push(3);
push(4);
push(5);
pop();
```
Здесь я вызываю функции, и после того, как я вставлю все элементы, я делаю pop, чтобы удалить 5 из массива. Давайте посмотрим на мой терминал
![Описание изображения](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pqkddjpzu6pyqs74n04u.png)
![Описание изображения](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0cwbr796afftu1it8pm6.png)
**Использует случаи**
![Описание изображения](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b69fzdcuz6azzxpyn1qy.jpg)
**Дополнительная информация**
**Реверс строки**
Мы собираемся увидеть одно из приложений стека, мы должны перевернуть строку, заданную в качестве входных данных, затем мы перевернем строку, потому что я люблю вас, люди, мы даже увидим проблему палиндрома.
![Описание изображения](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9v1hez6v2519rzvkko77.png)
Я знаю, что делаю это странно, но я хочу представить новую концепцию в js, которая заставляет его сиять, поэтому это выглядит странно. Теперь пришло время разбить его на части
```
const reverse = (str) =› {
const stackReverse = [];
for (пусть i = 0; i ‹ str.length; i++) {
stackReverse.push(str[i]);
console.log('индекс стека', str[i], stackReverse);
}
```
Функция здесь довольно просто, мы передаем аргумент, а затем создаем любой массив, в котором мы собираемся хранить наши буквы.
Итак, второй шаг — перебрать строку после того, как мы поместили каждую букву строки в массив с именем stackReverse и утешили ее.
```
let reverseStr = '';
while (stackReverse.length › 0) {
reverseStr += stackReverse.pop();
}
`` `
тем не менее, в функции мы делаем while, которая проверяет, больше ли длина stackRverse нуля, если нет, мы продолжаем извлекать массив, и каждый извлеченный элемент сохраняется в reverseStr.
```
if (reverseStr === str)
return console.log('true слово палиндром', reverseStr);
return console.log('false слово не палиндром', reverseStr);
};
```
Теперь все становится немного странным в операторе if, я собираюсь дать вам видео на YouTube, которое хорошо объясняет это.
YouTube хорошо объясняет:
{% youtube EumXak7TyQ0&t=541s %}
```
реверс('ссылка');
реверс('привет');
```
просто вызываю функцию, чтобы увидеть, является ли слово палиндромом. Спасибо за чтение❤️😍👌 Дойти до этого места было непросто
![Описание изображения](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b3ecq0lvo1xzp5ftdaq3.png)
Вот что я напечатал в терминале