Учимся использовать стек и очередь в JavaScript

Поділитися
Вставка
  • Опубліковано 16 тра 2024
  • Разберём определения, как работать со стеком и очередью в JavaScript. А также порешаем задачки и поучимся их использовать на практике. ❤️
    🍀 Поддержать канал: www.donationalerts.com/r/webe...
    ☕️ Купить кофе: buy.stripe.com/5kA7sL9574SG7x...
    🎨 Купить набор кистей Procreate: webelart.com/illustration.
    ✍️ Мой telegram channel: t.me/webelart
    🏰 Английский UA-cam: @webelart_en
    💁🏼‍♀️ Инстаграм: / webelart
    🦄 LinkedIn: / webelart
    ❤️ Код из урока можно скачать на Patreon: / 52197327
    00:00 введение.
    00:25 определения стека и очереди.
    02:18 представление в javascript.
    03:44 flatten через stack.
    09:06 польская нотация через stack.
    18:05 работаем с покупателями в очереди.
    25:27 очередь в обходе бинарного дерева по ширине.
    На канале я рассматриваю различные темы веб-разработки, на текущий момент: веб-основы, веб-анимации, веб-дизайн.

КОМЕНТАРІ • 56

  • @timurdaniel3543
    @timurdaniel3543 10 місяців тому +1

    Не знаю как я нашел твой канал. Но почему раньше не узнал о твой кнал😢. У тебя Божественный талант. Объясните сложное простым языком. Огромное спасибо за урок.

  • @user-zs6yt5vd8k
    @user-zs6yt5vd8k 2 роки тому +1

    Очень классный контент! Спасибо!

  • @svetlanazheleykina4113
    @svetlanazheleykina4113 Рік тому +1

    Спасибо Вам, Елена, большое!

  • @deniskorablev2648
    @deniskorablev2648 2 роки тому +2

    спасибо за видосики, очень полезно

  • @1MrGerman
    @1MrGerman 2 роки тому +1

    Крутая!) Очень много взял для себя из видео!

  • @quite10
    @quite10 2 роки тому +2

    Как всегда, на высоте😍
    Спасибо Вам большое!❤️

    • @webelart
      @webelart  2 роки тому

      ❤️❤️❤️

  • @user-ik6yn8hj2s
    @user-ik6yn8hj2s Рік тому

    Класс! Спасибо за видео)

  • @annst968
    @annst968 2 роки тому

    Огромнейшее спасибо вам за урок))) Бегу подписываться)

  • @user-hr3zp4jj5w
    @user-hr3zp4jj5w 2 роки тому

    Супер! Спасибо!

  • @user-yj8tf7xb6g
    @user-yj8tf7xb6g 10 місяців тому

    Ещё 1 любимый блогер! Спасибо за старания! ❤

  • @VladosDDoS
    @VladosDDoS Рік тому +2

    Отличное видео, спасибо.
    Возможно в задаче на нотацию в условии if(!isNaN(numberedEl) для большей читабельности можно написать просто if(numberedEl) тк он не пропустит falsy - NaN значение.

  • @user-qu5ff6dw8h
    @user-qu5ff6dw8h 2 роки тому

    Обьяснить сложное простым понятным языком это талант!!! Спасибо огромное за Ваши труды! Лучшие уроки в youtube!

    • @webelart
      @webelart  2 роки тому +1

      Рада, что видео понравилось! Спасибо большое за такие тёплые слова! 😍 Крепко вас обнимаю! ❤️

    • @user-qu5ff6dw8h
      @user-qu5ff6dw8h 2 роки тому

      продолжайте пожалуйста у Вас это очень хорошо получается желаю вам успехов и всего наилучшего!

  • @Nikoulkina
    @Nikoulkina 11 місяців тому +1

    Отличное видео!

  • @user-qx6gp9ci5d
    @user-qx6gp9ci5d Рік тому

    Круто👍🏻

  • @user-er3le7uo6v
    @user-er3le7uo6v 2 роки тому

    Только начала смотреть и уже поставила лайк♥️

    • @webelart
      @webelart  2 роки тому

      Спасибо! 😍🤗❤️

  • @alexandrcoolakov1170
    @alexandrcoolakov1170 2 роки тому +1

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

  • @arsenmanasuev4934
    @arsenmanasuev4934 2 роки тому

    материал хороший. и подача не плоха. год назад поставил бы два пальца но сейчас только один.

  • @user-zs6yt5vd8k
    @user-zs6yt5vd8k 2 роки тому

    Эх, хорошо бы нечто подобное про графы увидеть )

  • @sviatoZavr
    @sviatoZavr 2 роки тому

    Жду от вас курсы )

  • @adilb8652
    @adilb8652 Рік тому

    Круто

  • @jamjam3337
    @jamjam3337 Рік тому

    👏

  • @zenkowu2622
    @zenkowu2622 Рік тому +2

    Спасибо большое за урок, нравится ваша подача! Но я не поняла, почему задачу flatten мы решаем с помощью СТЕКА, а не очереди? ведь мы забираем элементы из НАЧАЛА, что соответствует структуре данных ОЧЕРЕДЬ, ведь первый пришел - первый ушел, буду очень благодарна за объяснение

  • @HauntMeGaming
    @HauntMeGaming 3 місяці тому

    Спасибо за объяснение, но применение стека в ваших примерах как мне видится сильно замедляет код)) Массив хранится в памяти спина к спине и соответственно первый елемент очень важен для памяти. Удаляя первый елемент мы перееопределяем весь массив, то есть каждая итерация O(n). Получается супер медленно - поправьте если я не прав)

    • @webelart
      @webelart  3 місяці тому

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

  • @suslikest3708
    @suslikest3708 2 роки тому

    А если мне например в дереве надо посчитать все цены товаров(узлов), то можно также через стек сделать, но с помощью копии массива const stack = [...arr](чтобы не изменять основной)? Или есть лучше варианты?

    • @webelart
      @webelart  2 роки тому +1

      Смотря как у вас дерево задано. Вообще мутировать данные обычно не очень хорошо и если возможно создать дубликат, то это круто. Но опять же вы создадите только верхний уровень дубликата. Т.к. все массивы, объекты по ссылке передаются и если у вас внутри есть доп. под массивы, то их по факту тоже нужно копировать.
      Вообще можете посмотреть моё видео с деревьями, я там показывала несколько примеров обхода двоичного дерева. ua-cam.com/video/loLjdVaaDKs/v-deo.html. Вдруг будет полезно для ваших задач. ❤️

  • @lvivduncan
    @lvivduncan 2 роки тому

    спасибо! Елена, а видео про стек вызовов будете делать?)

    • @webelart
      @webelart  2 роки тому +1

      Про рекурсию? 🙂

    • @lvivduncan
      @lvivduncan 2 роки тому

      @@webelart рекурсия тоже весьма интересна) но имел ввиду ситуацию, когда происходит переполнение, например, при использовании нескольких setTimeout() или нескольких event, когда одно событие накладывается на другое

    • @webelart
      @webelart  2 роки тому +1

      @@lvivduncan Если я правильно поняла, то вы говорите про event loop. Очень крутая тема! Пока даже не думала про эту тему, спасибо за наводку! Но пока не знаю будет ли в ближайшем будущем про это или нет. Кажется вот в этом видео здорово объясняют ua-cam.com/video/8aGhZQkoFbQ/v-deo.html. Если с англ тяжело, там есть русские субтитры и вроде даже не машинные.

    • @lvivduncan
      @lvivduncan 2 роки тому

      @@webelart большое спасибо!)

  • @-Forever-Young-
    @-Forever-Young- Рік тому

    странно, что так мало лайков

  • @asmal832-hi
    @asmal832-hi 11 місяців тому

    Во flatten не лучше с начала pop, push, а потом уже в result unshift? Сложность совсем другая будет.😊

    • @webelart
      @webelart  11 місяців тому

      Pop push лучше использовать. По памяти должно быть продуктивнее.

  • @luckytima2315
    @luckytima2315 Рік тому

    Подскажите пожалуйста, я вроде 5kyu а вот на этой задаче застрял, как практиковатся чтоб решать такие?

    • @webelart
      @webelart  Рік тому +2

      Вообще правило таково, пробуете как получается и как знаете решить задачу, важно чтобы самостоятельно. А потом смотрите решение и ищете лучшее, разбираете. В итоге у вас в голове появится новый кирпичик возможного решения.
      Про стеки у меня понимание появилось после того как деревья изучила. Там был обход дерева в примере и я просто поняла как можно такие задачи решать. У меня есть ещё видео про деревья, там кажется были обходы ua-cam.com/video/loLjdVaaDKs/v-deo.html

    • @luckytima2315
      @luckytima2315 Рік тому

      @@webelart

  • @yevhenpolishchuk4327
    @yevhenpolishchuk4327 2 роки тому

    Спасибо за видео! Но я как-то запутался. Например в вики очередь описана иначе. Главное отличие в том что новый елемент добавляется в конец очереди, а не в начало. Тоже самое в learn.javascript с ссылкой на вики. І соответственно для очереди они предлагают методы push и shift. В чем подвох?

    • @webelart
      @webelart  2 роки тому +1

      Здравствуйте! Рада, что контент понравился. Давайте разберёмся, что смутило? Если обращаться к определениям, то очередь - первый пришёл, первый ушёл. Стек - первый пришёл, последний ушёл. А там уже используются методы, которые удобнее. По факту можно для очереди unshift и pop применить, но это будет дороже, чем push и shift.

    • @yevhenpolishchuk4327
      @yevhenpolishchuk4327 2 роки тому

      @@webelart Интересно:) Что применять можно разные методы я понял. Просто почему на картинке в вики очередь выглядит не так? В чем подвох?ru.wikipedia.org/wiki/%D0%9E%D1%87%D0%B5%D1%80%D0%B5%D0%B4%D1%8C_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)

    • @yevhenpolishchuk4327
      @yevhenpolishchuk4327 2 роки тому

      @@webelart Написано что елемент добавляется в конец очереди. Вот текст если ссылка не сработала: О́чередь - абстрактный тип данных с дисциплиной доступа к элементам «первый пришёл - первый вышел» (FIFO, англ. first in, first out). Добавление элемента (принято обозначать словом enqueue - поставить в очередь) возможно лишь в конец очереди, выборка - только из начала очереди (что принято называть словом dequeue - убрать из очереди), при этом выбранный элемент из очереди удаляется.

    • @webelart
      @webelart  2 роки тому

      @@yevhenpolishchuk4327 Определение и картинка ок. Уточните, какая минута видео вызвала конфликт и что именно не сходится с представленным вами определением?

    • @yevhenpolishchuk4327
      @yevhenpolishchuk4327 2 роки тому

      @@webelart Я просто питаюсь разобраться для себя что и как работает. У вас в видео все ок. Просто посмотрев ваше объяснение на примерах у меня сложилось впечатление что добавление элементов в очередь происходит в начало очереди. Хотя конкретно об этом вы не говорили. Потом я начал рыть дальше и тогда возник мой вопрос. Было бы понятней если бы вы этот момент уточнили, но это мое субъективное мнение тем более что я только учусь поэтому не судите строго и еще раз спасибо за видео.

  • @zergzerg4844
    @zergzerg4844 3 місяці тому

    Я может что-то не понял но это точно структура данных или речь о том как отсортировать или получить результат используя методику струтуры данных стека или очередь. Так как в Бинарном деревы вы там точно создавали структуру через класс с методами обхода. А здесь тупо функция с результатом.

    • @webelart
      @webelart  3 місяці тому

      В качестве стека и очереди в JS можно использовать обычный массив.

    • @zergzerg4844
      @zergzerg4844 3 місяці тому

      @@webelart Не это я вонимаю, но я думал сама идей этих струтктур это ограничений функций типа поиска или извлечение данных из любого места. Например в стеке там должны работать методы push, pop peek,

  • @MrDmi3i
    @MrDmi3i Рік тому

    я начинающий... )) маленькие открытия совершаю )) оказывается while(stack.length) - это пока "стек существует" ... О_о у меня окрываются глаза ))

    • @MrDmi3i
      @MrDmi3i Рік тому

      и на кодварс зашел, даже прошел входное испытание

  • @PS-tn6mc
    @PS-tn6mc 2 роки тому +1

    жалко что вы начали не для самых маленьких с основы основ с элементарных понятий... приходится пропукать

    • @webelart
      @webelart  2 роки тому +1

      У меня есть видео для начинающий по html, по js пока нет. Экспериментирую с разными форматами. Возможно будут курсы для начинающих в том числе по JS, поэтому следите 😘

  • @PS-tn6mc
    @PS-tn6mc 2 роки тому

    Извините. пропуСкать