Ich habe dieses Stück Code. Es ist syntaktisch korrekt, aber wenn ich versuche, einen Knoten von vorne zu entfernen, heißt es "Die Liste ist leer". Ich glaube, dass mein Fehler in der isEmpty
Methode ist, weil es den falschen Wert zurückgibt, aber ich weiß nicht warum.Verknüpfte Liste entfernen
Könnten Sie mir bitte helfen, warum zu erkennen?
Hier ist mein Code:
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 ;
}
}
Linkliste
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 ;
}
}
es ist oben, scrollen Sie einfach nach unten, um den ganzen Code zu sehen bitte –
Es hat wahrscheinlich etwas mit der Tatsache zu tun, dass Sie Ihr 'firstLink' Feld in einigen Methoden ändern, die meiner bescheidenen Meinung nach keine Geschäfte haben, die den Zustand ändern Ihre Liste ('display' und' findItem') –