Метод поиска и удаления связанного списка Java
У меня есть проект для класса информатики, и у меня есть все, кроме одного метода. Метод удаления. В основном я делаю связанный список из пользовательского ввода, и мне нужно иметь возможность удалить все узлы (что сделано) и удалить один указанный узел. Поэтому мне нужно поискать в списке узлов найти тот, который нужно удалить, и удалить его. Все, что может помочь, ценится. Если у вас есть решение, предложите объяснение, поскольку я пытаюсь изучить и просто решить проблему.
Я не собираюсь давать вам графический интерфейс, потому что я неНе думаю, что это необходимо, но вот класс узла.
public class MagazineList {
private MagazineNode list;
public MagazineList(){
list = null;
}
public void add(Magazine mag){
MagazineNode node = new MagazineNode(mag);
MagazineNode current;
if(list == null) {
list = node;
}
else {
current = list;
while(current.next != null)
current = current.next;
current.next = node;
}
}
public void insert(Magazine mag) {
MagazineNode node = new MagazineNode (mag);
// make the new first node point to the current root
node.next=list;
// update the root to the new first node
list=node;
}
public void deleteAll() {
if(list == null) {
}
else {
list = null;
}
}
public void delete(Magazine mag) {
//Delete Method Goes Here
}
public String toString(){
String result = " ";
MagazineNode current = list;
while (current != null){
result += current.magazine + "\n";
current = current.next;
}
return result;
}
private class MagazineNode {
public Magazine magazine;
public MagazineNode next;
public MagazineNode(Magazine mag){
magazine = mag;
next = null;
}
}
}
ОБНОВИТЬ
Вот метод, который я собрал, и он проходит первую часть цикла while и никогда не распознает один и тот же элемент в списке. Я использовал ту же самую вещь для методов ввода и удаления, но она не распознает это. Любая помощь приветствуется.
public void delete (Magazine mag) {
MagazineNode current = list;
MagazineNode before;
before = current;
if(current.equals(mag)){
before.next = current;
System.out.println("Hello");
}
while ((current = current.next)!= null){
before = current.next;
System.out.println("Hello Red");
if(current.equals(mag)){
current = before;
System.out.println("Hello Blue");
}
}
}