Двусвязный список | Динамические структуры данных #2
Vložit
- čas přidán 31. 01. 2018
- Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =)
Односвязный список | Динамические структуры данных #1
goo.gl/VuXS6Z
✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅
Если вам нравятся мои уроки, вы хотите поддержать меня и развитие канала, то можете сделать это тут!=)
🔴🔴🔴 www.donationalerts.ru/r/simple...
или тут
🔴🔴🔴 / simplecode
✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅
Уроки по программированию
Наша группа ВК smplcode
Подписывайтесь на канал / @simplecodeit
*Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =)*
Я просто зашёл лайк поставить.Мне ещё рано такое смотреть
Спасибо! =)
Сергей, а вы же не просто так стали программистом, вы же знаете computer science. Если вы изучали это, то пожалуйста, скажите хорошую книгу или хорошие уроки). Лайк, репост сделал=)
Хах, так же делаю))
Сергей, вы супер учитель. Внятно, доступно, неторопливо.
Прекрасное изложение материала, спасибо за ваш труд.
Спасибо большое Сергей за отличный урок!!!!
Просто безумно интересно, продолжай в таком же духе Сергей!!! От меня лайк.
Начал свой путь изучения С++ с вашего канала. Только благодаря Вам , Сергей, и Вашему неоценимому труду мои знания пребывают на таком уровне.
тебе повезло. а меня сперва "закинуло" к Гоше Дударь,) слава богам, там почти с порога видно качество преподавания, но пару дней я все таки потерял,
@@user-rm3eu6we8c Боже упаси я проклинаю ютуб, который заваливает ссылками на его ролики... самый большой вред для начинающего программист начинать обучение с таких недопрограммистов как дударь
Отличный урок Сергей. Спасибо!
Спасибо за такой хороший теоретический урок.
Спасибо за урок
Огромное спасибо,действительно полезная информация!!❤❤
спасибо!
#двусвязныйсписок #динамическиеструктурыданных #SimpleCode #урокипрограммирования
Спасибо за урок!
видео просто супер-ясно и по делу)
Отличное объяснение. Лайк
Спасибо большое очень позновательно.
После урока решил сам реализовать данный список. Думаю, что не зря, узнал много нового, учась на своих же ошибках. Спасибо за урок!
Скинь код пожалуйста
спасибо, попробую написать
Спасибо за простое объяснение)
Спасибо)
Спасибо большое!!!!
Хороший урок
Данные уроки очень понятные еще и на 2х скорости можно смотреть!
хехе, у меня поучилось сделать всю реализацию, все благодря вам, Сергей, спасибо за уроки
Пожалуйста!
можете поделиться? у меня завал(
Perfectly!!! Оказывается, когда я просматривал уроки по односвязным спискам, то реализовал еще дополнительно связь с предыдущим элементам = то есть я САМ реализовал двусвязный список
19:50 Очень полезным, очень.
Спасибо за урок ) Ну на примере этих квадратиков (псевдо-элементов) всё понятно . Но я точно не смог бы сейчас сам написать односвязный /двусвязный список на C#....Наверно=/
Сергей как всегда лучший в мире
Доброй ночи! Мне очень нравится Ваш канал!!! Запищите пожалуйста видео по новым стандартам с++!!!! Очень прошу!!!
Здравствуйте!
Пожалуйста записывайте видеоуроки про паттерны проектирования на C++.
Спасибо!! =)
спасибо
8:40
я уже думал что моргнул не так
Like!
класс)
Уважаемый автор! Вы планируете сделать реализацию двухсвязного списка после картинок? Уроки качественные, но сделать реализацию новичку сложновато даже на базе урока на основе односвязного списка
+
поддерживаю!
Самому реализовывать не нужно, уже все давно реализовано, например в C# есть LinkedList - это и есть реализация двусвязного списка. Главное - понимание принципов функционирования.
@@kitemanrus Ну суть же про практику и понимание, как это работает внутри
Все довольно легко так то, зная об односвязном списке..
Для полного закрепления материала рекомендую код из предыдущих 3ёх видео по односвязным спискам модифицировать для работы с двусвязными списками.
а вообще можно было бы прикрутить алгоритм как в мар по поиску ссылки на ячейку этого списка, типа 10 ячеек, делим сайз(10) на две части, если индекс который мы ищем больше 5 то опять делим, правую часть, если больше 8ми то либо 9 либо 10, ну в общем опять же как в мар=)
thank's man
четко и ясно а будут уроки по жаве?
10/10
Скилл я однозначно подкачал.
Спасибо! Следующий урок уже STL будет?
STL будет когда закончим рассмотрение всех динамических структур данных.
Сергей, а вы же не просто так стали программистом, вы же знаете computer science. Если вы изучали это, то пожалуйста, скажите хорошую книгу или хорошие уроки). Лайк, репост сделал=)
Посмотри уроки Андрея Созыкина.
Я бы ответил посмотри лессонсы Андрея Созыкина)😂
@@oraclevb5430 да ну всё. я забил на программирование) Не оч как по мне)
@@overdoses1794 xD
@@overdoses1794 Вердикт такой: Смотреть уроки Созыкина занимает 2 года и отбивает всяческое желание программировать )))
Есть видео с кодом?
Объясните пожалуйста, а откуда мы знаем где в памяти лежит последний элемент? Они же в хаотичном порядке расположены. Если на первый элемент указывает просто имя (так говорил автор в видео однонаправленного списка), то что указывает на последний?
Предпоследний элемент, или первый с конца
Не совсем понял, как меняется индекс всех остальных элементов списка при добавлении или удалении элемента
Здравствуйте,хотел бы кое что уточнить.какой тип данных храниться в data?
Любой, который укажешь
10000000000\10
у меня такой вопрос: вы говорите, что сначала мы удаляем указатель на данные, а потом "после этого" удаляем сами данные, но как мы к данным попадем, если мы уже удалили указатель?
да копию сперва делаем, потом остальные махинации,) это итак понятно,)
После урока реализации односвязного этот был изи спасибо
Дякую
12:40
А на Python списки также работают?
Мы не на Python программируем
живу только ради его видосов...
а есть материал по реализации этих структур на js
есть, на моём github, я сейчас как раз пишу эти реализации, пока только однонаправленный список реализовал - GeorgyDev11111/data_structures
А где пример реализации?)
🤔🤔🤔🤔
А что если в двусвязный список добавить адресс среднего элемента, это по-идеи должно ускорить поиск элемента в 2 раза, а по-сравнению с односвязным в 4 раза
Я тоже об этом подумал
а еще я подумал над тем чтобы разделить этот список на небходимые входы так скажем
например
массив на 1000 ячеек делим на 10
и получается отступ по 100 элементам
там уже ориентироваться будет куда легче)
ну конечно все зависит от задачи
и колечества элементов на сколько делить)
поидее если сделать в классе кнструкцию которая бдет содержать в себе указатели на елемент списка и его идентификатор то будет же быстрее и эффективно как с диамическими массивами, типа как создать внутри класса списка мар с ключом по индексу который хранит указатель на ячейку или типо того...ну типа это может быть так вектор реализован или ещё какой нибудь список из стл? я не чтобы прям разбираюсь но просто интересно, кто знает? Подскажите кто нибудь, такое существует?
Бро,когда дойду до мап,может тогда и отвечу)))
Или ты уже понял?
У вас тут какое-то видео про с++ между рекламой
Вот двусвязный список собственного производства , какахами не кидайтесь . Если кому-то надо забирайте .
#include
#include
#include
#include
#include
//#include
using namespace std;
template
class List {
public:
List();
~List();
int& Getsize() { return size; }
void push_back(T data );
void push_front(T data );
T& operator[](int index);
private:
int size;
template
class Node {
public:
T data;
Node* pNext;
Node* pPrev;
Node(T data = T(), Node*pNext=nullptr,Node*pPrev =nullptr) {
this->data = data;
this->pNext = pNext;
this->pPrev = pNext;
}
};
Node* head;
Node* tail;
};
template
List::List()
{
size = 0;
head = nullptr;
tail = nullptr;
}
template
List::~List()
{
}
template
void List::push_front(T data)
{
if (head == nullptr) {
head = new Node(data);
tail = head;
}
else {
Node* neww = new Node(data);
Node* temphead = head;
head = neww;
head->pNext = temphead;
temphead->pPrev = neww;
}
size++;
}
template
T& List::operator[](int index)
{
if ((size % 2 == 1&& index pNext;
temp1++;
}
}
else {
int number = 0;
if (size % 2 == 1) {
number = (size - 1) - index;
}
else {
number= (size - 1) - index;
}
int temp1 = 0;
Node* temp = tail;
while (temp != nullptr) {
if (temp1 == number) {
return temp->data;
}
temp = temp->pPrev;
temp1++;
}
}
}
template
void List::push_back(T data)
{
if (head == nullptr) {
head = new Node(data);
tail = head;
}
else {
Node* neww = new Node(data);
Node* temphead = tail;
tail = neww;
tail->pPrev = temphead;
temphead->pNext = neww;
}
size++;
}
void main() {
List A;
for (int i = 0; i < 9; i++) {
A.push_front(rand() % 20);
}
cout
Страшно очень страшно
если бы мы знали что это такое
но мы не знаем что это такое)
Самый лучший способ донести информацию показывать ее в коде, а не на квадратиках и кружках!
Где реализация, зачем эта мурзилка
я вообще не шарю о чем тут идёт речь, поэтому ещё с предыдущей серии у меня вопрос: а почему нельзя хранить 1 дополнительный элемент в памяти, где будут перечислены все элементы списка в виде: номер элемента -} ссылка на область памяти?
Я правильно понял, что односвязный список (ОС) не хранит общее количество элементов (ОК), а двусвязный список (ДС) хранит? Если так, то получается, что при операциях добавление/удаление, ДС соответственно увеличивает/уменьшает это счётчик ОК, верно?
Очень много рекламы - затрудняет восприятие
Спасибо за урок
спасибо
Спасибо за урок
спасибо