Реализация односвязного списка c++ Часть 2 | Урок

  Рет қаралды 87,183

#SimpleCode

#SimpleCode

6 жыл бұрын

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅
Если вам нравятся мои уроки, вы хотите поддержать меня и развитие канала, то можете сделать это тут!=)
🔴🔴🔴 www.donationalerts.ru/r/simple...
или тут
🔴🔴🔴 / simplecode
✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅
Уроки по программированию
Наша группа ВК smplcode
Подписывайтесь на канал / @simplecodeit

Пікірлер: 127
@SimpleCodeIT
@SimpleCodeIT 6 жыл бұрын
*Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =)*
@dark_enigm4
@dark_enigm4 4 жыл бұрын
Большое спасибо, лайк поставил)))
@kaisaryerdenbekov1588
@kaisaryerdenbekov1588 6 жыл бұрын
Что за магия? Смотрел, смотрел, и тут "И на этом, мы закончим наш урок...". P.S. Время прошло приятно и незаметно.
@artlinestudio6735
@artlinestudio6735 2 жыл бұрын
Отличный урок! Спасибо! Сергей, пожалуйста возобновите уроки по С++. Очень просим!
@BrownAleks
@BrownAleks 4 жыл бұрын
Огромное спасибо! Во многих случаях, что бы разобраться самостоятельно как работает подобная логика уходит много времени и нервов. С вашим каналом получаю огромное удовольствие от этих познаний.
@borisshabanov6702
@borisshabanov6702 6 жыл бұрын
Спасибо, стало понятнее как работает список в STL. Даёшь больше методов в списке!)
@gru74ik
@gru74ik 6 жыл бұрын
Вчера под первой частью написал, что ролик сделан "неплохо". Сейчас понимаю, что довольно сильно преуменьшил оценку. Очень хороший канал, годные ролики. Хорошо поставленная речь, хороший контент, хороший код (за исключением мелких помарок), подробные объяснения. В целом, отличный формат. За наглядную пошаговую демонстрацию процесса в отладчике - отдельный плюс.
@-xavie9580
@-xavie9580 Жыл бұрын
В целом очень огромная проделана работа над этими уроками. Объяснения на высшем уровне, схватываю всё с первого раза. Единственное, что хотелось бы отметить как минусы, так это то, что все видео записаны в 25 кадров (отчего по началу глаза очень болели) и плохое качество микрофона (его фоновые шумы перебивают музыку на заднем плане, а в начальных видосах вообще крики детей на улице...)
@user-zb4hz5rt3s
@user-zb4hz5rt3s Жыл бұрын
А ты кто, чтобы говорить о его помарках?
@-xavie9580
@-xavie9580 Жыл бұрын
@@user-zb4hz5rt3s человек
@user-zb4hz5rt3s
@user-zb4hz5rt3s Жыл бұрын
@@-xavie9580 я не вам
@gru74ik
@gru74ik Жыл бұрын
@@user-zb4hz5rt3s я - программист. Теперь моя очередь спрашивать. И вот мой вопрос: ты уверен, что автор не в состоянии сам ответить за себя и ему нужен адвокат в твоём лице?
@SimpleCodeIT
@SimpleCodeIT 6 жыл бұрын
#односвязныйсписок #динамическиеструктурыданных #SimpleCode #урокипрограммирования
@user-pd4gt9zz9c
@user-pd4gt9zz9c 6 жыл бұрын
Всё очень хорошо) благодарочка) хорошего Вам здоровья и долгих лет жизни)
@C2H5OHH
@C2H5OHH 2 жыл бұрын
Thank you for the lesson!
@user-ci2ku2oo5u
@user-ci2ku2oo5u 6 жыл бұрын
Огромное спасибо!)
@Yohimbex
@Yohimbex 3 жыл бұрын
Но ведь это всё можно было реализовать сразу в деструкторе))) Канал топ, всё доходчиво поясняет (даже со скоростью х2)) ). Продолжайте в том же духе)
@whyyoudidit7
@whyyoudidit7 2 ай бұрын
большое спасибо! очень подробный и понятный гайд
@overdoses1794
@overdoses1794 6 жыл бұрын
Благодарю за урок!
@andrewbistroff1199
@andrewbistroff1199 6 жыл бұрын
Спасибо за урок!
@nap0le0nb0naparte7
@nap0le0nb0naparte7 6 жыл бұрын
спасибо Сергей!
@go5190
@go5190 6 жыл бұрын
Спасибо!
@Ermine882
@Ermine882 6 жыл бұрын
Спасибо за урок.
@user-ff1zh6ei8f
@user-ff1zh6ei8f 6 жыл бұрын
Отлично объясняете))) Спасибо за урок!
@user-nw5iw5ew9z
@user-nw5iw5ew9z 2 жыл бұрын
После первой части, вторая часть далась легче :D. Спасибо за урок, Сергей.
@alexandrprodan8794
@alexandrprodan8794 4 жыл бұрын
Классный урок!!!Ты великолепен, сенсей.
@user-bc4vi6hl2f
@user-bc4vi6hl2f 6 жыл бұрын
Спасибо за урок
@neonmadness9479
@neonmadness9479 3 жыл бұрын
Спасибо-спасибо-спасибо!!! Лучшие уроки по программированию
@vladalu9794
@vladalu9794 6 жыл бұрын
большое спасибо за отличный урок!!!!
@user-vv8sg5dv2g
@user-vv8sg5dv2g 6 жыл бұрын
Огромное спасибо!!! Как всегда все предельно понятно))))
@segars9604
@segars9604 6 ай бұрын
Спасибо за бесценный труд!)
@_mirai
@_mirai 4 жыл бұрын
еще один полезно-интересный урок:D
@lollal5827
@lollal5827 4 жыл бұрын
После первого урока смотрится на одном дыхании. Большое спасибо)
@observer7742
@observer7742 Жыл бұрын
Спасибо!)
@tixdo2
@tixdo2 5 жыл бұрын
Включаю видос и автоматом ставлю лайк. Спасибо за уроки все предельно просто))
@Nicolas_Cage525
@Nicolas_Cage525 4 жыл бұрын
Вот честное слово что б я без этого канала делал))
@miroslavklyukovsky683
@miroslavklyukovsky683 2 жыл бұрын
Спасибо!!!
@Artur-pj2vl
@Artur-pj2vl 3 жыл бұрын
Топово Обясняешь)
@GeorgeBondarchuk
@GeorgeBondarchuk 6 жыл бұрын
супер!
@mykhailomorhal2181
@mykhailomorhal2181 6 жыл бұрын
спасибо)
@jailyssneust2189
@jailyssneust2189 2 жыл бұрын
Благодарен
@user_x138
@user_x138 3 жыл бұрын
4 дня просматривал первую часть об односвязных списках, сотни раз прогонял код через отладчик -какой итог? Наконец, понял всю суть указания на поля объекта через указатель с помощью оператора -> и даже сам написал метод для удаления последнего элемента в списке. Кайфы непередаваемые!!! Сергей, ты лучший.
@maastm3760
@maastm3760 Жыл бұрын
Никак не могу понять для чего это ->, как и где оно используется, помоги!🥲🥺
@user_x138
@user_x138 Жыл бұрын
@@maastm3760 Давно это было, уже забыл.
@user-tr1ph4fu3e
@user-tr1ph4fu3e Жыл бұрын
@@maastm3760 К полям и методам объекта можно обращаться двумя способами: 1) Через сам объект. В этом случае используется точка. Например obj.method() 2) Через указатель на объект. В этом случае используется ->. Например pObj->method()
@nick-ei2og
@nick-ei2og Жыл бұрын
@@user-tr1ph4fu3e а ещё "pObj->method()" == "(*pObj).method()"
@Moonev_Fantasy
@Moonev_Fantasy 3 жыл бұрын
Двухтысячный лайк твой)
@user-hb7er4ff9u
@user-hb7er4ff9u 2 жыл бұрын
спасибо
@shigo123
@shigo123 4 жыл бұрын
Я каждый раз как будто прозреваю после каждого ролика 😂
@Felix-og7pd
@Felix-og7pd 3 жыл бұрын
Спасибо 2020
@satyrosa
@satyrosa Жыл бұрын
Уже писали про проверку списка на пустоту. Кроме этого предлагаю сделать pop_front() булевым методом и тогда деструктор листа превращается в while(pop_front()){}
@viper_0097
@viper_0097 4 ай бұрын
Самое сложное в реализации подобного - создать каркас) А дальше уже интуитивно додуматься можно
@user-lx5vv3uu8u
@user-lx5vv3uu8u 4 жыл бұрын
Спасибо! Жесть)))
@strtel3186
@strtel3186 2 жыл бұрын
В методе pop_front(), наверное, было бы лучше, если мы сначала проверили наш список на пустоту. Поскольку вполне может быть, что у нас head указывает на nullptr. И когда мы создаем вспомогательный узел temp, которому присваем head->next, мы можем получить ошибку.
@_Yes_.
@_Yes_. Жыл бұрын
ok👊👊👊
@kaynsolo
@kaynsolo 6 жыл бұрын
Simple!
@TGrod
@TGrod 3 жыл бұрын
Отличные уроки! Под конец пошло самое интересное))) Но у меня есть вопрос (возможно он решён в третьем видео, но я пока его не смотрел). В методе pop_front() мы не делаем проверку head на nullptr. Из-за этого (вроде как) может выдаться ошибка в строке head = head->pNext; (68 строка), так как head равно nullptr, то мы не можем обратиться к полю pNext, так как его попросту нет P.S. Я создал эту ситуацию искусственно (так как лень было переделывать метод pop_front) и написал просто небольшой метод test в котором выводил адрес pNext у head (то есть: cout pNext
@petro_f7996
@petro_f7996 6 жыл бұрын
В методе pop_front не плохо было бы делать проверку на наличие хоть одной ноды, что бы не загнать size в минуса. Проще проверять (size > 0).
@user-zb6vq7oc8f
@user-zb6vq7oc8f 5 жыл бұрын
0 дизлайков!!! Красава, так даржать!
@romkagm7756
@romkagm7756 3 жыл бұрын
3 человека так плакали из-за идеального объяснения, что промазали по кнопке лайка)
@romikgrigoryan6552
@romikgrigoryan6552 3 жыл бұрын
2021год , нету такого канала больше
@user-kw2ex8zs1i
@user-kw2ex8zs1i 6 жыл бұрын
Функцию pop расписал слегка по-другому ( всегда пытаюсь сделать свой вариант потом смотрю по видео) , интересует верный ли мой вариант , все работает , на сколько я заметил , да и по логике правильно , кто разбирается скажите верен ли алгоритм void deleteEl() { Node *tmp = head->next; delete head; head = tmp; size--; }
@user-rm3eu6we8c
@user-rm3eu6we8c 5 жыл бұрын
delete не удаляет head, а очищает (освобождает) выделенную память, на которую указатель head указывает. после данной операции head продолжает указывать на ту же область память, но там уже находится мусор,) вспомни первые уроки про delete, nullptr, если же не смотрел - лучше посмотри,)
@Arxpetro
@Arxpetro Жыл бұрын
5:46 Все мы знаем, что хедшот наносит максимальный урон!
@ilovemove1
@ilovemove1 Жыл бұрын
Тут уже мб писали, в pop_front нету проверки if (head != nullptr). Если попнуть несколько раз, имея в списке лишь 1 элемент, то будет ошибка.
@user-ye5hi9cu8s
@user-ye5hi9cu8s 10 ай бұрын
Да уж, незавидная судьба у переменной temp. Она жалкая пародия head, котрая нужна только для того чтобы ее удалили😢
@tenten44
@tenten44 8 ай бұрын
понимаю, что поздновато пишу, но странно, что перед этой темой изучались умные указатели и тут как бы идеальная тема, чтобы их применить, но почему-то юзаются обычные указатели. Я в целом написал, тоже самое но с умными указателями и добавил несколько новых методов. Так как я не эксперт, у меня вроде все работает, но я не совсем понимаю как и точно ли правильно. Было бы круто сразу умные указатели применить на практике. (у все шаред, не совсем понимаю нужно ли где-то строить над ними вик или нет и точно ли чиститься память)
@yaroslavvodotyka8345
@yaroslavvodotyka8345 6 жыл бұрын
Если еще читаете тут коментарии, то почему не предусмотрели ситуацию в pop_front , когда не будет элементов, то если мы его вызовем, то head указывая на null , попробует обратиться к pNext и получим ошибку, или просто я чего то не понял?
@pashakkaa
@pashakkaa 5 жыл бұрын
Всё правильно, надо ещё 2 строчки в начале метода добавить:) Автору огромное спасибо за уроки.
@savinposter9816
@savinposter9816 5 жыл бұрын
Pavlo Kornya получается надо проверить на то , что если указатель на head уже nullptr?
@deletedaccount3077
@deletedaccount3077 4 жыл бұрын
@@savinposter9816 Как решил проблему?
@savinposter9816
@savinposter9816 4 жыл бұрын
@@deletedaccount3077 так и проверил
@user-ct9oj1es2t
@user-ct9oj1es2t 5 жыл бұрын
Здравствуйте строчки Node *temp=head; head=head->pNext; delete temp; //Мы в темп так ничего и не записали так как указатель на Head присвоили следующему элементу сраазу во второй строке Size--;
@lehamoroz5306
@lehamoroz5306 4 жыл бұрын
указатель *temp указывает на первый элемент, если мы его просто так убиваем, разве первый элемент не будет продолжать висеть в воздухе?
@TheWladberlin
@TheWladberlin 4 жыл бұрын
@@lehamoroz5306 Нет, не будет. Указатель temp как раз и указывает на бывший head (первый элемент) поэтому мы его, разумеется, можем удалить и через temp. Если та запись тебя ирритирует, то напиши по-другому: Node *temp; temp = head;
@TheWladberlin
@TheWladberlin 4 жыл бұрын
"Мы в темп так ничего и не записали " - в каком смысле не записали? А это что: Node *temp=head; ?
@michaelivanov1605
@michaelivanov1605 4 жыл бұрын
@@TheWladberlin а зачем на temp если мы с ним не чего не делаем, кроме того что создаём и удаляем? Можно ведь без него обойтись?
@shibu5180
@shibu5180 Жыл бұрын
@@michaelivanov1605 мы очищаем память от head
@user-tm1xg7sm7t
@user-tm1xg7sm7t 2 жыл бұрын
Head = Head → pnext; Не совсем понятен этот синтаксис, что именно эта стрелочка означает. Подскажите, пожалуйста, какую тему загулить, чтобы разобраться?
@arranorun8808
@arranorun8808 2 жыл бұрын
head->pNext; тоже самое что и head.pNext;
@user-nd4sl1lp9b
@user-nd4sl1lp9b Жыл бұрын
Всё ясно и понятно,но вот код почти не видно из- за недофокусировки видеокамеры!
@user-go1dz6zx6p
@user-go1dz6zx6p 5 жыл бұрын
Приветствую, я немного не понимаю, в односвязном списке элемент же добавляются в конец списка, а достаётся последний прибывший элемент(LIFO). А у вас первыми достаются элементы, которые первыми и пришли. Ведь так? Это же не LIFO...
@jekax-ray9793
@jekax-ray9793 5 жыл бұрын
А как сделать удаление элементов по индексу???
@takatochi2605
@takatochi2605 4 жыл бұрын
Ошибка C2446 ==: нет преобразования "const int" в "List::Node *" что єто такое и почему у тебя нет с етим проблем
@takatochi2605
@takatochi2605 4 жыл бұрын
Ошибка C2446 ==: нет преобразования "const int" в "List::Node *"
@romanpirs2550
@romanpirs2550 2 жыл бұрын
template void List::pop_front() { Node *temp = head; head = head->pNext; delete temp; Size--; } поставь *temp и всё решица (НЕ ЗРЯ ТЫ ЖДАЛ 2 ГОДА)
@overchikkk
@overchikkk 6 жыл бұрын
Когда конец курса ? И какой новый курс ? С#?
@SimpleCodeIT
@SimpleCodeIT 6 жыл бұрын
kzfaq.info/get/bejne/e7eUpJaJ3dWugYU.html
@user-fq6ul9vg2p
@user-fq6ul9vg2p 5 жыл бұрын
+
@welnyr
@welnyr 3 жыл бұрын
Указатель head удалять не нужно? В конце он будет равен nullptr, но у меня всё равно есть сомнения
@MouseDaison
@MouseDaison 4 жыл бұрын
Я, конечно, понимаю, что видео уже больше года и писать сюда не совсем актуально, однако видеть, что у него 1к лайков и всего 1 дизлайк - что-то невообразимое! Чур, дизлайк не мой! Я всегда под этим каналом лососи леплю!!!)))
@faasfasasf8109
@faasfasasf8109 4 жыл бұрын
1.5к лайков vs 1 дизлайк, это нечто)
@michaelivanov1605
@michaelivanov1605 4 жыл бұрын
@@faasfasasf8109 есть видосы до этого, где их было вообще 0.
@dtrqk811
@dtrqk811 3 жыл бұрын
2 года видосу, 2к лайков, 3 дизлайка ))
@Yohimbex
@Yohimbex 3 жыл бұрын
Уже 3(((
@asankod8549
@asankod8549 2 жыл бұрын
@@Yohimbex оторвать бы им руки
@lehamoroz5306
@lehamoroz5306 4 жыл бұрын
В методе pop_front указатель *temp указывает на первый элемент, если мы его просто так убиваем, разве первый элемент не будет продолжать висеть в воздухе?
@BrownAleks
@BrownAleks 4 жыл бұрын
В переменной *temp копия адреса на бывший первый элемент. И убиваем (освобождаем память по этому адресу) мы его после того, как первым элементом становиться второй.
@michaelivanov1605
@michaelivanov1605 4 жыл бұрын
@@BrownAleks пол часа размышлял над этим в 4 часа ночи)спасибо!
@BrownAleks
@BrownAleks 4 жыл бұрын
@@michaelivanov1605 на здоровье. Наберитесь терпения, самое вкусное ещё впереди... =)
@lebedead
@lebedead 3 жыл бұрын
7:14 теперь можем наш temp безнаказанно удалить, как говорится temp в сделку не входил.
@user-jp4qb6br7k
@user-jp4qb6br7k 3 жыл бұрын
Можно и так, наверное void List::pop_front() { Node *temp = head->pNext; delete head; head = temp; this->size--; }
@mortlemur9510
@mortlemur9510 4 жыл бұрын
а где можно найти этот код?
@BrownAleks
@BrownAleks 4 жыл бұрын
Ручками, прямо с экрана конспектируй. Получишь массу удовольствия, практику и понимания логики происходящего. =)
@dukenukem1675
@dukenukem1675 2 жыл бұрын
а мы не можем обойтись без temp и удалить сразу head а потом ему присвоить следующий указатель на элемент?
@arranorun8808
@arranorun8808 2 жыл бұрын
Если сразу удалим head, то потеряем ссылку на следующую Node.
@dukenukem1675
@dukenukem1675 2 жыл бұрын
@@arranorun8808 спасибо!, Не подумал об этом
@user-jt1hu7pg8y
@user-jt1hu7pg8y Жыл бұрын
Не знаю ответит ли кто то В коде pop_print void List::pop_front() { Node temp = head; head = head->pNext; delete temp; Size-- ; } Все правильно но много ошибок Писал весь код на Vs 2022
@GetBoros
@GetBoros Жыл бұрын
Node *temp = head; возможно *указатель пропустил), не проверял так что это не точно
@alimuhamedaliev6665
@alimuhamedaliev6665 4 жыл бұрын
в этом видео 1 дислайк, и поставил его Я) "нет я поставил лайк"
@pavelnovikov3894
@pavelnovikov3894 2 жыл бұрын
А если так ? while (head!=nullptr) { pop_front(); }
@senez1976
@senez1976 2 жыл бұрын
jr
@senez1976
@senez1976 2 жыл бұрын
Я очень люблю обезьян, я представляю их обнажёнными.............!!!!!!!
@narzaru
@narzaru 4 жыл бұрын
Наткнулся тут на видно, а есть ли результативная разница между удалением первого элемента на 8:07 и этим кодом ? void List::deleteFirstItem() { ListNode* temp = headList->pNext; delete[]headList; headList = temp; }
@user-pf9rm2tt9e
@user-pf9rm2tt9e 4 жыл бұрын
Нет
@satyrosa
@satyrosa Жыл бұрын
Извиняюсь, но разве мы можем присвоить значение уже удаленному указателю?
@narzaru
@narzaru Жыл бұрын
@@satyrosa, у меня код некорректный, как минимум delete[], как максимум удаление головы. Скорее всего, два года назад, я хотел провернуть штуку, как запомнить следующий элемент, удалить текущий и заменить удаленный следующим.
@romkagm7756
@romkagm7756 3 жыл бұрын
рандомный комментарий рандомный комментарий рандомный комментарий рандомный комментарий
@jojomajo
@jojomajo 4 жыл бұрын
1500 лайков и всего 2 дизлайка, вау
@pavelios3577
@pavelios3577 5 жыл бұрын
Спасибо за урок.
@Antonov_Ivan.
@Antonov_Ivan. 8 ай бұрын
Спасибо за урок!
@KurpatovInstagram
@KurpatovInstagram 6 жыл бұрын
Спасибо!
@user-kb6qd8rg4g
@user-kb6qd8rg4g 4 жыл бұрын
спасибо
@DD0S2
@DD0S2 3 жыл бұрын
спасибо
터키아이스크림🇹🇷🍦Turkish ice cream #funny #shorts
00:26
Byungari 병아리언니
Рет қаралды 29 МЛН
I CAN’T BELIEVE I LOST 😱
00:46
Topper Guild
Рет қаралды 86 МЛН
(Life) Advice From The Creator of C++
3:18
Honeypot
Рет қаралды 859 М.
Собеседование Junior C++
45:32
Ambushed Raccoon
Рет қаралды 102 М.
터키아이스크림🇹🇷🍦Turkish ice cream #funny #shorts
00:26
Byungari 병아리언니
Рет қаралды 29 МЛН