Linked List на Python (Связный Cписок на Python) 2021

preview_player
Показать описание
В этом видео я научу вас создавать Linked Lists на языке программирования Python. Или как еще их называют Связные Списки. Вы узнаете теорию, отличие от Array List, узнаете всех типы связных списков, а так же узнаете Time Complexity всех операций.

Так же мы создадим много разных методов: добавление в конец append(), вывод всех элементов show(), вывод количества элементов length(), добавление в начало push_front(), удаление последнего элемента remove_back(), удаление первого элемента remove_front(), вывод элемента по индексу value_at(), добавление элемента по индексу insert(), удаление элемента по индексу remove(), перевернуть (сделать reverse) Linked List reverse().

Это видео будет полезно тем кто проходит это в унике и хочет понять как реализоваться Linked List на самом популярном языке программирования, для тех кто просто самостоятельно изучает Computer Science или для тех кто готовится к интервью в IT компании.

Тайм коды:
00:00 - Вступление
00:21 - Теория
06:22 - Создание класса Node
08:54 - Создание класса LinkedList
09:43 - Метод append()
16:48 - Метод show()
20:40 - Метод length()
22:48 - Метод push_front()
25:36 - Метод remove_back()
30:12 - Метод remove_front()
32:45 - Метод value_at()
37:15 - Метод insert()
44:59 - Метод remove()
49:55 - Метод reverse()
55:13 - Заключение

Не забудьте зафоловиться на гитхаб)))
Рекомендации по теме
Комментарии
Автор

Чел, спасибо тебе, начало было немного странное, потому что когда видишь лицо автора поначалу не понимаешь какой контент будет, а тут прям доходчиво и очень понятно что и куда, короче очень годно! Респект!

eluterracock
Автор

Тупил с этим линкедлистом, не мог найти видоса, твой помог, стал лучше понимать как это работает, осталось с реверсом до конца вникнуть и все, спасибо

mrfang
Автор

Отличный гайд, спасибо, дополнил собственный код парой очень удобных идей твоих.

Anshegar
Автор

Большое тебе спасибо, очень доступно и понятно объяснил данную тематику, плюсом хочу поблагодарить за демонстрацию такого типа создания односвязаного списка, у тебя получилось гораздо понятней чем у других.

daniillantsov
Автор

Благодарю за отличную лекцию. Твой материал по linkedList дал абсолютное его понимание. Все пересмотренное и прочитанное ранее такой ясности не дало. Успехов тебе. Ты большой молодец.

ЮрийМицкевич-ээ
Автор

Знаешь дружище я пересмотрел столько туториалов по связанному списку, но понял только твой. ты большой молодец. Спасибо

aboronilov
Автор

Вообще не мог понять эту тему. Но после просмотра этого обьясненя прям прозрел. Спасибо автору!!!

EtaSensey
Автор

Роман, огромное тебе спасибо. Ты спас мою нервную систему . Наконец-то до меня дошло, как это работает.👍

_mrmark
Автор

Самое классное объяснение связанных списков. Спасибо

kokinsergei
Автор

Спасибо за примеры. Помогло вникнуть глубже.

kotovasya
Автор

Лучшее объяснение на youtube!!!! спасибо! подписка

elenatalley
Автор

Если апенд реализовывать, как в видео, получается перебор всего списка для добавления в конец. В таком случае сложность алгоритма линейная О(n), зависит от количества элементов списка. Для pushback и pushfront должна быть константная О(1). А вот инсерты не в пограничные позиции можно сделать только с перебором.
Можно добавить помимо head еще и tail.
Для первого элемента условие if head is none и if tail is none : head = current, tail = current.
Для последующих элементов (если head != none): tail.next = current (делаем связь последнего элемента с новым), tail = current (переставляем указатель хвост на новый (последний) элемент). Если список двухсвязанный, то еще добавляется связь current.previous = tail до перестановки указателя хвоста на новый элемент

usernoname-wvof
Автор

Конечно я новичок и понимаю, что пригодиться может всё. Но в итоге самые эффективные методы это когда мы по индексу добавляем или удаляем элемент в списке. Они хоть и самые большие, но в целом если прописать только 2 метода и работать с элементами в списке только по индексам это же будет удобнее и в плане кода выйдет меньше, чем запоминать и прописывать сразу все методы.

Disperser
Автор

@Роман Рахлин, спасибо за видео, для меня материал очень полезен,
но в функции remove() ошибка - если в списке находится только 1 элемент и сделать удаление my_list.remove(0) - этот элемент в нем и останется.
надо блок if, где проверка индекса на 0, вынести из цикла while и сделать проверку до цикла, иначе с одним эелементом цикл while никогда не выполнится, потому что next вернет None.

pavelolifer
Автор

Очень хорошее и понятное объяснение!! красава

arturartur
Автор

Очень понятное объяснение Linked List.
Если не ошибаюсь то LinkedList можно было бы развернуть в цикле длиной LinkedList.length каждый раз переставлять второй элемент в начало списка и после этого удалять второй элемент, используя уже написанные функции push_front и remove
Например так (у меня методы класса названы чуть по другому):
def reverse_me_2(self):
i = 0
while i < len(self) - 1:
+ 1))
self.remove_node_at(i + 2)
i += 1

Sergey-czym
Автор

ку, спасибо за видос. А это на пучарме можно сделать? Если да, подскажи как классы написать

duha_prostoy
Автор

Спасибо большое, все очень понятно объясняешь 🤍

itladymk
Автор

Спасибо, классное видео, надеюсь будет еще!)

igortheoverlord
Автор

зачем нужно было писать геттеры и сеттеры, если атрибуты публичные?

ЮрийКлименко-кщ