私はこのコードを持っています。構文的には正しいですが、正面からノードを削除しようとしているときは、「リストは空です」と表示されます。 私はそれが間違った値を返しますが、私はなぜ知らないので、私のミスは、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 removeLink
firstLink
割り当てる割り当てlinkReference.next= firstLink;
で
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') –