Скажите пожалуйста, как вставить какое небуть число, например 10, перед каждым числом, равным 15 ?
@ruslanzubkov42973 жыл бұрын
В целом хороший урок. Но вот с удалением, что-то не то. У меня вместо int правда String. Но это не имеет значения. Почему-то корректно удаляет только второй элемент (под номером один), остальное абракадабка. На видео, кстати, тоже удаляется второй элемент.
@gulbagomedovich3 жыл бұрын
У него неправильно. Вот: public void remove(int element) { Node previous = head; Node current = head; while (current != null && current.getElement() != element) { previous = current; current = current.getNext(); } if (current != null) { if (current == head) { head = head.getNext(); } else { previous.setNext(current.getNext()); } } }
@anasko38242 жыл бұрын
сейчас 20 минут искал, что у меня не так, жопа сгорела дотла просто
@ИльяГопак3 жыл бұрын
Правильный removeAt() public void removeAt(int key) { LinkList cur = head; LinkList prev = head; while(cur != null && cur.key != key){ prev = cur; cur = cur.next; } if (cur != null) { if (cur == head) { head = head.next; } else { prev.next = cur.next; } } }
@Victor-yw1ml4 жыл бұрын
Спасибо большое за урок. Могли бы Вы ответить чем односвязный список отличается от ArrayList()? Какой физический смысл ссылок на следующий элемент? И LinkedList() - не есть ли это тот же односвязный список? Спасибо
@ITFUNTraining4 жыл бұрын
Это очень глобальный вопрос, но если вкратце, то у Листа множество реализаций и все они отличаются по времени выполнения. Если интересно, вот тут подробно описано: javarush.ru/quests/lectures/questsyntax.level08.lecture05
@Victor-yw1ml4 жыл бұрын
@@ITFUNTraining Спасибо - хорошее и короткое объяснение различий. У меня в лабораторной требуется создать линейный односвязный список и упорядочить его в соответствии с заданным порядком в массиве. Линейный односвязный список здесь - это и есть LinkedList?
@ITFUNTraining4 жыл бұрын
@@Victor-yw1ml Да.
@КонстантинСухопаров-с7ъ2 жыл бұрын
Логика странная. Только запутался. И кстати, если удаляем последний элемент, то есть 10, то удаляется все равно 20.
@Victor-yw1ml4 жыл бұрын
Подскажите пож-та метод добавления нового элемента в конец списка.
@ITFUNTraining4 жыл бұрын
Прошу прощения за задержку. Для метода добавления в конец списка создайте дополнительную переменную tail(хвост), она облегчит работу. Если есть еще вопросы, то можете посмотреть здесь в репозитории: bitbucket.org/Alexander_07/linkedlist/src/master/
@gr1ny13 жыл бұрын
Подскажите, пожалуйста, как можно удалить несколько элементов сразу, начиная с заданного(например, начиная с 20 и до конца списка)
@ITFUNTraining3 жыл бұрын
Здравствуйте, здесь можно поступить так: 1) создать метод удаления по индексу (removeByIndex) или по значению. 2) создать метод удаления по диапазону (removeList). 3)После, вы вызываете метод removeList, в нем есть параметры скажем так from и to. В теле метода цикл for. В теле цикла вы вызываете метод removeByIndex, а он уже удаляет этот элемент из вашего списка. Далее переходите к следующему элементу списка.
@gr1ny13 жыл бұрын
@@ITFUNTraining большое спасибо, попробую так
@DuhaxD3 жыл бұрын
А разве получился не стек?)
@ITFUNTraining3 жыл бұрын
Стек - это частный случай однонаправленного списка
@DuhaxD3 жыл бұрын
@@ITFUNTraining но методы удаления в том же стеке и обычном случае односвязного списка отличаются. Плюс в односвязный список добавляется элемент в конец, а не в начало :)
@andrey33402 жыл бұрын
Немножко попотел и исправил удаление данного элемента Однако код стал побольше, и пришлось добавить булеву переменную private Boolean {bool = true;} в начало класса ============================ public void removeAt(int key) { bool = true; if (isEmpty()) { System.out.println("Лист пуст"); return; } LinkList cur = head; LinkList prev = head; if (cur.data == key) { cur = cur.next; head = cur; bool = false; } while(bool) { if(cur.next == null) { System.out.println("Искомый элемент отсутствует"); bool = false; return; } prev = cur; cur = cur.next; if (cur.data == key) { if(cur.next == null) prev.next = null; else { cur = cur.next; prev.next = cur; } bool = false; } } }
@makarovdmitrii4 жыл бұрын
Подскажите а как удалить узел по индексу позиции? то есть есть узлы с индексами : 0 1 2 с любой информацией, я указываю что хочу убрать индекс 1, и теперь индекс 0 указывает на индекс 2 и индекс 1 полностью удален
@ITFUNTraining4 жыл бұрын
Если были индексы: 0->1->2 и вы 1 удалили, то остается 0->2. Здесь все верно, удалился ведь один узел. bitbucket.org/Alexander_07/singlelinked-list/src/master/
@vasilyaasyanova19014 жыл бұрын
а что означает next ? Для чего он предназначен ?
@ITFUNTraining4 жыл бұрын
next это ссылка на последующие элементы находящиеся в списке. С помощью него как раз и путешествуем по списку.