У меня есть эта часть кода. Это синтаксически правильно, но когда я пытаюсь удалить узел с фронта, он говорит: «Список пуст». Я считаю, что моя ошибка в методе isEmpty
, потому что он возвращает неправильное значение, но я не знаю почему.Связанный список удалить
Не могли бы вы помочь мне определить, почему?
Вот мой код:
public class link {
public String bookName ;
public int millionSold;
public link next ;
public static void main(String [] args)
{
linkList linkedlist = new linkList();
linkedlist.insertLink("Head first java", 200);
linkedlist.insertLink("Head first design pattern", 400);
linkedlist.insertLink("Head first design", 600);
linkedlist.display();
System.out.println(linkedlist.isEmpty());
linkedlist.findItem("Abed");
}
public void display()
{
System.out.println(bookName +":"+millionSold+"000.000");
}
public link(String bookName,int millionSold)
{
this.bookName=bookName;
this.millionSold=millionSold;
}
public String toString()
{
return bookName ;
}
}
Linklist
class linkList
{
public link firstLink ;
linkList()
{
firstLink = null ;
}
public boolean isEmpty()
{
boolean empty ;
if(firstLink==null)
{
empty = true ;
}
else
{
empty = false ;
}
return empty;
}
public void insertLink(String bookName , int millionSold)
{
link newLink = new link(bookName,millionSold);
newLink.next = firstLink;
firstLink=newLink ;
}
public link removeLink()
{
link linkReference = firstLink ;
if(!isEmpty())
linkReference.next= firstLink;
else
System.out.println("The List is Empty");
return linkReference ;
}
public void display()
{
while(firstLink!=null)
{
firstLink.display();
System.out.println("The Next :"+firstLink.next);
firstLink = firstLink.next;
System.out.println();
}
}
public link findItem(String bookName)
{
if(!isEmpty())
{
while(firstLink.bookName != bookName)
{
if(firstLink.next == null)
{
return null ;
}
else
{
firstLink=firstLink.next;
}
}
}
else
{
System.out.println("Can not find a match");
}
return firstLink ;
}
}
приведен выше, просто прокрутите вниз, чтобы увидеть весь код, пожалуйста –
Вероятно, это связано с тем, что вы модифицируете поле 'firstLink' в некоторых методах, которые по моему скромному мнению не имеют бизнеса, изменяющего состояние ваш список ('display' и' findItem') –