Как реализовать односвязный список на Java / Односвязные списки для чайников.

  Рет қаралды 11,020

KACATUK

KACATUK

3 жыл бұрын

Маслятки, держите видосик про односвязные списочки. Предлагайте темы новых видео в комментариях.

Пікірлер: 30
@user-pk7jx1xw4i
@user-pk7jx1xw4i 3 жыл бұрын
Видео топ. Сделай пожалуйста гайд по тому, как ливать с курсов от крупных компаний)
@BCEMCPATb
@BCEMCPATb 2 жыл бұрын
А в чем проблема? Я просто хочу пойти на курсы в компании..
@sashapushkov
@sashapushkov 5 ай бұрын
Если в списке будет несколько повторяющихся чисел (1,2,2,7,26), то при вызове метода remove удалится только последний элемент :(
@viktorshvidkiy6713
@viktorshvidkiy6713 9 ай бұрын
в методе remove не проверяется последний элемент списка, ведь его поле next как раз равно null и тело цикла не выполнится
@user-nw5tx9xk3j
@user-nw5tx9xk3j 2 жыл бұрын
Спасибо огромное!!!
@kacatuk844
@kacatuk844 2 жыл бұрын
Ты с СумДУ?)
@user-nw5tx9xk3j
@user-nw5tx9xk3j 2 жыл бұрын
@@kacatuk844 да)
@nataljaroehm4754
@nataljaroehm4754 Жыл бұрын
Добрый вечер. Как реализовать метод: получение элемента по индексу public int get(int index). Заранее спасибо
@kacatuk844
@kacatuk844 2 жыл бұрын
Если хранить в объекте последний узел списка (например переменная lastNode), то мы можем добавлять новые элементы за 0(1), просто присваивав новый узел в поле next последнего (только нужно не забыть потом сказать что последний узел теперь - это тот, который только что добавили). И еще важно при удалении учитывать, что мы можем удалить последний элемент, тогда в переменную lastNode нужно будет положить предыдущий элемент.
@karma_kyn1148
@karma_kyn1148 8 ай бұрын
бро думаю в remove в условие while тебе не нужно current.next лучше будет скорее всего просто current (последний элемент не будет удалятся)
@karma_kyn1148
@karma_kyn1148 8 ай бұрын
если я не прав то прости
@MK-jf4ty
@MK-jf4ty 3 жыл бұрын
Приветствую! Можешь сделать видос про полную реализацию очереди. Поиграться с поведением так сказать.
@kacatuk844
@kacatuk844 3 жыл бұрын
Хорошо, в скором времени будет. Будем основываться на коде с этого видео
@kacatuk844
@kacatuk844 3 жыл бұрын
Привет! Вот новое видео: kzbin.info/www/bejne/fnfIemqQo7WSkM0
@ivansuvorov8303
@ivansuvorov8303 2 жыл бұрын
посыпался на первом тесте) если в конце будут одинаковые данные, к примеру 1 8 8 8 8 8, то remove не уберет все восьмерки, оставит половину. решил созданием аррейлиста в который при методе add добавлял текущий узел, а в remove изначально сказал пройтись по этому листу. чувствую что решение не самое умное, но это сработало
@ivansuvorov8303
@ivansuvorov8303 2 жыл бұрын
получается что при узлах data(next) ... 8(8) 8(8) 8(8) 8(8) 8(8) ... ссылки на следующий элемент меняются с 8 на 8, но маркировать ссылки мне показалось сложнеее чем создать листок
@user-pn4fu6of3r
@user-pn4fu6of3r 6 ай бұрын
нашла решение более короткое: в while в классе remove вместо двух строк, перекидывающих текущий и предыдущий объекты на следующие, добавляем такой if: if (currentNode.data != data) { previousNode = currentNode; } currentNode = currentNode.next; вроде как проблему полностью решает
@artem5451
@artem5451 3 жыл бұрын
Привет, будет ли видио про двухсвязный список и нужно ли вводить переменную количество нодов?
@kacatuk844
@kacatuk844 3 жыл бұрын
Привет, если нужно видео про двусвязный список - сделаю. Насчет переменной количества, если логика твоего приложения требует знать длину списка - то да. Например, если доступ осуществляешь по индексу, то - да. Если ты будешь хранить пары-значения, и доступ по ключу, то - нет.
@AB-ku1su
@AB-ku1su 2 жыл бұрын
Добрейший вечерочек. Как зациклить этот список, как определить что он зацикленный?
@kacatuk844
@kacatuk844 2 жыл бұрын
Чтобы зациклить список, нужно чтобы последний элемент указывал не на NULL, а на голову списка.
@amoriblain3655
@amoriblain3655 2 жыл бұрын
Есть ли способ удалить элемент из односвязного списка за О(1)? При условии, что у нас есть указатель на удаляемый элемент.
@starlord0208
@starlord0208 2 жыл бұрын
Если в узле мы будем хранить информацию не только о следующем, но и предыдущем элементе - да. Но тогда это уже двухсвязный (двунаправленный) список )
@artem5451
@artem5451 3 жыл бұрын
Для чего в методе удаления предыдущий равен текущему , а текущий следующему, какой функционал этого?
@kacatuk844
@kacatuk844 3 жыл бұрын
Смотри, допустим нам нужно удалить элемент с значением "3", из списка [1, 4, 6, 3, 8]. Чтобы это сделать нам нужно чтобы узел со значением "6" стал указывать не на "3", а на "8", таким образом в списке на узел с "3" уже ничего указывать не будет. (Саму память освободит сборщик мусора Java, нам не нужно явным образом, как допустим в С++, потом еще и освобождать память узла "3"). Но сначала, нам же нужно как то прийти к узлу "6", потому что изначально мы имеем доступ только к голове списка. Нам метод remove принимает "3", и с головы списка идет по списку, пока не встретит "3". И чтобы удалить, как я уже писал, нужно чтобы предыдущий указывал на следующий. Для этого нам и нужно хранить предыдущий узел. Если бы список был двусвязным, было бы проще.
@artem5451
@artem5451 3 жыл бұрын
@@kacatuk844просто вы же удаляете в цикле if( при условии если дата равна) а вот после if в теле while для чего previusNode = currentNode; current = current.next; вот для чего это тут не понятно, если удаление происходит в if;
@Opelmeister
@Opelmeister 2 жыл бұрын
@@artem5451 это перемещение по списку
@kacatuk844
@kacatuk844 2 жыл бұрын
@@artem5451 Смотри, нужный для удаления элемент может быть не первый в списке, а скажем, четвертый. И чтобы удалить четвертый элемент, нам нужно от головы списка, пройтись до него. И также для удаления нам нужен 3 элемент, чтобы его ссылка на следующий указывала на 5. Советую просто прогнать программу в дебаггере, и все станет на свои места.
@Marina-qi2nl
@Marina-qi2nl Жыл бұрын
музыка лишняя на фоне..
Структуры данных в Python #1: Односвязные списки
39:14
Программирование и иже с ним
Рет қаралды 25 М.
Java пишем связанный список
51:33
Java Vision
Рет қаралды 19 М.
ОБЯЗАТЕЛЬНО СОВЕРШАЙТЕ ДОБРО!❤❤❤
00:45
Получилось у Миланы?😂
00:13
ХАБИБ
Рет қаралды 5 МЛН
Best Toilet Gadgets and #Hacks you must try!!💩💩
00:49
Poly Holy Yow
Рет қаралды 22 МЛН
Best KFC Homemade For My Son #cooking #shorts
00:58
BANKII
Рет қаралды 72 МЛН
Коллекции в Java: List, Set и Map
18:59
Devmark Ru
Рет қаралды 36 М.
Java. Очередь и стек.
22:03
Sergey Arkhipov Java Tutorials
Рет қаралды 21 М.
Дженерики в Java. Проще чем кажется.
21:36
Игорь Мешалкин
Рет қаралды 15 М.
LinkedList vs ArrayList in Java Tutorial - Which Should You Use?
11:43
Coding with John
Рет қаралды 582 М.
Java SE. Урок 34. Коллекции ArrayList & LinkedList
24:11
Follow the white rabbit
Рет қаралды 49 М.
Задача из Собеседования на 160,000 Евро в Год
13:27
Саша Лукин
Рет қаралды 1,1 МЛН
ОБЯЗАТЕЛЬНО СОВЕРШАЙТЕ ДОБРО!❤❤❤
00:45