Тёмный

Структуры данных в Python #1: Односвязные списки 

Программирование и иже с ним
Подписаться 3,8 тыс.
Просмотров 26 тыс.
50% 1

В этой серии уроков мы будем учиться реализовывать собственные структуры данных в языке python. Начнём со списков и далее по списку, извините за каламбур. На следующем уроке закончим разбирать все остальные виды списков, потому как они все очень похожи.
Оставляйте комментарии и подписывайтесь на канал, чтобы не пропустить новые видео! Приятного просмотра!
Ссылка на статью с хабра: habr.com/ru/po...
Теги:
программирование, IT, python, code, vscode, структуры данных, алгоритмы, как написать списки, односвязный список, САКОД.

Опубликовано:

 

29 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 46   
@programming_etc
@programming_etc Год назад
Ребят, я в шоке. 13к просмотров на конец январая 2к23го. Спасибо всем огромное и там, ну это... можете другие видосики посмотреть... вот....
@souromortyl6748
@souromortyl6748 Месяц назад
лучший! Я пересмотрел видео 10-15 и ток у тебя понял, что да как советую всем делать сохранение - ложиться спать после изучения информации, затем читаем ещё раз и делаем работает 10000%
@rus_azer
@rus_azer Год назад
Два дня рою интернет чтобы с 0 понять linked list, наконец-то нашёл нормальный видос, где с 0 он создаётся, заполняется, запускается. А то везде написано как создать, а как заполнить и запустить никто не говорит
@oleksandr64
@oleksandr64 3 года назад
очень все понятно обьяснил, давай следующий урок!
@some_dude1
@some_dude1 Месяц назад
Чел, спасибо. Может кто подсказать где я недоглядел. На 12:45 в этом фрагменте, когда я запускаю свой код, мне выдает: "TypeError: Node() takes no arguments" Мой код: class LinkedList: head = None class Node: element = None next_node = None def __int__(self, element, next_node=None): self.element = element self.next_node = next_node def append(self, element): if not self.head: self.head = self.Node(element) return element node = self.head while node.next_node: node = node.next_node node.next_node = self.Node(element) def out(self): node = self.head while node.next_node: print(node.element) node = node.next_node print(node.element) linked_list = LinkedList() linked_list.append(10) linked_list.append(15) linked_list.append(312) linked_list.append(54) linked_list.append(1001) linked_list.out()
@asdegtv
@asdegtv 4 месяца назад
Не смею критиковать автора, возможно, у меня что-то вышло не так. При использовании метода insert с параметром index=0, происходит так, что переданный элемент и элемент head просто повторяются бесконечное количество раз, потому что не переопределяется переменная head def insert(self, index, element): node = self.head prev_node = self.head if index == 0: self.head = self.Node(element=element, nextNode=prev_node) return element for i in range(0, index): prev_node = node node = node.nextNode prev_node.nextNode = self.Node(element=element, nextNode=node) return element
@yusifaliyarov3180
@yusifaliyarov3180 6 месяцев назад
insert с индексом 0 будет норм работать? там по идее head.next = element, element.next = head будет
@aleksbostorn5342
@aleksbostorn5342 Год назад
О дааа. прекрасно понимаю уже как лл работает, но решить задачу - испытание))
@deranakt185
@deranakt185 3 года назад
Го некст видос, про двусвязные списки, очереди и тому подобное!
@programming_etc
@programming_etc 3 года назад
В ближайшее время запилю на двусвязные и циклические списки.
@deranakt185
@deranakt185 3 года назад
@@programming_etc а можно прям в ближайшее ближайшее время? А то видео на эту тему нет(на питоне), а мне сдавать лабы уже надо🤣🤣🤣🤣
@Ugliest122
@Ugliest122 Год назад
В def get можно ли убрать prev_node = node? Нам же не обязательно помнить предыдущий, чтобы вывести индекс?
@academai11
@academai11 2 года назад
Спасибо за видео, яндекс позвонил говорят на hh резюме увидели и пригласили пройти стажировку. Вот сижу делаю заметки так сказать 😂
@programming_etc
@programming_etc 2 года назад
Поздравляю. На яндексе кстати рил любят гонять по структурам данных и алгоритмам, в частности по деревьям, я знаю много спрашивают.
@academai11
@academai11 2 года назад
@@programming_etc я на devops направление, там написано "базовые алгоритмы" так что верю в лучшее но учту)) не планируешь продолжить рубрику?
@real_scorp
@real_scorp Год назад
@@academai11 доброго дня : ) Получилось собеседование пройти в Яндекс? Какие были задачи, вопросы? : )
@МаксимВиноградов-ъ8ь
13:50 Можно было сделать просто while node. Так как node мы каждый раз присваиваем значение следующего узла, то когда мы обработаем последний, в переменной node будет Null. 23:30 в принципе, perv_node нам и не нужен в функции get. Насчёт length тебя уже поправили. Ну и для каждой функции нужно обрабатывать исключения. Например у тебя есть список [10, 20, 30], а ты изменяешь, получаешь или удаляешь 4 элемент. Спасибо тебе большое за видос, все внятно и понятно объяснил. Успехов тебе!❤️
@ДмитрийКлеваков-л7ы
Спасибо автору! все понятно объяснил. Жду продолжения серии роликов про структуры данных в Python! self.length, как атрибут класса, можно было бы использовать и работал бы правильно, если увеличить счетчик в момент добавления головного элемента на 16-ой строке.
@KabyNKS
@KabyNKS Год назад
Спасибо этому человеку который все понятно объяснил. Хочу увидеть видео про некоторых алгоритмов например Алгоритм дейкстры или алгоритм кадена. Жду не стерпением!
@ВасяПупкин-п7с7г
Чтобы узнать длину, проще счётчик запихать в класс Node. Вернее атрибут создать в LinkedList, а плюсовать уже в Node. Тогда при создании каждой ноды будет +1 и не надо в каждый метод прописывать. DRY!
@kif_chik5911
@kif_chik5911 Год назад
А можете, пожалуйста, рассказать, как такое провернуть?🙏
@migunovich
@migunovich 3 дня назад
@@kif_chik5911 class LinkedList: head = None length = 0 class Node(): element = None next_node = None def __init__(self, element, next_node=None): self.element = element self.next_node = next_node LinkedList.length += 1 В конце def delete можно добавить LinkedList.length -= 1
@ВадимГаращенко-я7т
Вопрос-замечание автору, точнее 2 (сам новичок, поэтому не ругайте, пытаюсь сам разобраться). 1) В методе insert, при вставке в начало списка (когда index == 0), возникает бесконечный цикл. Необходима реализация, где создается новый узел и присваиваете ему next_node ссылку на текущий self.head. def insert(self, val, index): i = 0 previous_node = self.head current_node = self.head # If inserting at the beginning if index == 0: new_node = self.Node(val, next_node = self.head) self.head = new_node else: # Find the correct insertion position while i < index: previous_node = current_node current_node = current_node.next_node i += 1 previous_node.next_node = self.Node(val, next_node=current_node) согласны ли? 2) В методе delete, нет необходимости использовать del. Ведь в момент, когда мы переназдначаем ссылку previous_node.next_node = node.next_node удаляемый елемент теряет ссылку на себя и будет автоматически удален сборщиком мусора. def delete(self, index): i = 0 current_node = self.head previous_node = self.head if index == 0: self.head = self.head.next_node else: while i < index: previous_node = current_node current_node = current_node.next_node i += 1 previous_node.next_node = current_node.next_node P.S. Автору огромное спасибо за материал! Очень ценю, когда люди тратят свое время чтобы поделиться своим опытом!
@CyrexisX
@CyrexisX 3 года назад
Хороший гайд, поможет студентам, которые начинают изучать структуры и алгоритмы обработки данных
@anaken127
@anaken127 6 месяцев назад
мне так кажется я никогда это не пойму)))
@anaken127
@anaken127 6 месяцев назад
а не, понял
@IT_T_
@IT_T_ 2 года назад
я начал решать задачи на leetcode и не понимал что вообще за структура данных это, хотел сам воспрозвести но не вышло, спасибо за помощь
@cherry_ds372
@cherry_ds372 2 года назад
"здравствуйте мои маленькие любители видеок...." а... блин
@programming_etc
@programming_etc 2 года назад
Не выкупил отсылки)
@ВладаЗубенко
@ВладаЗубенко 6 месяцев назад
Спасибо большое, за такой качественный и полезный ролик!
@Andrestiks1
@Andrestiks1 2 года назад
Видео прикольное и полезное! Спасибо автору!
@marinaivanova5277
@marinaivanova5277 5 месяцев назад
Спасибо, автор, на пальцах все объяснил!
@НикитаЯнварев
@НикитаЯнварев 3 года назад
Спасибо большое ты мне очень помог!
@ilyin_sergey
@ilyin_sergey 11 месяцев назад
а можно ссылку на гитхаб?
@electr-i2z
@electr-i2z Год назад
nice...
@максволков-с5у
@максволков-с5у Год назад
бро сп все помогло удачи тебе !!!!!
@mathseed
@mathseed Год назад
Спасибо за видео:D
@taxedomask551
@taxedomask551 Год назад
Благодарю за видео!
@IT_T_
@IT_T_ 2 года назад
Спасибо!
@annazaitseva6213
@annazaitseva6213 3 года назад
Благодарность за урок!
@veraburak8049
@veraburak8049 Год назад
отлично все. только код пишите заранее. мне совсем неинтересно смотреть ошибки кода и процесс его набивания. а так все супер, продолжайте пжста
@APCblK
@APCblK 3 года назад
Привет, сделай видео о взломе вайфая через wps или через другие способы очень интересная тема
@Тимофей-т5э
@Тимофей-т5э Год назад
че так сложно
Далее
titan tvman's plan (skibidi toilet 77)
01:00
Просмотров 5 млн
Все о принципах SOLID
16:07
Просмотров 25 тыс.
Linked List. Data Structures | Implementation in JS
35:49
Односвязный список C#
32:12
Просмотров 12 тыс.
Ядерка-как это будет.
25:55
Просмотров 213 тыс.
titan tvman's plan (skibidi toilet 77)
01:00
Просмотров 5 млн