1

やあ、私は単独でリンクされたリストのappenedメソッドを実装しようとして問題を抱えています. コードは次のとおりです。

public void append ( int item ) {
//inserts item to the end of the list
        if ( head == null){
            head = new LinkInt();
            curr = head;
            curr.elem = item;
        }
        else{
        LinkInt temp = head;
        while ( temp.next != null){
        temp = temp.next;}
        temp.elem = item;
        }


}

そして、ここに私の印刷方法があります(それも正しいかどうかはわかりません):

public void print () {
//outprint the array 
    //ie. <1, 2, |3, 4>
    if (  head == null) {
        System.out.print("<");
        System.out.print(">");
    }
    else{
    LinkInt temp = head;
    System.out.print("<");
    while ( temp != null) {
        if ( temp == curr){
                System.out.print( "|" + temp.elem + ","); }
        else{
        System.out.print( temp.elem );
        System.out.print(",");}
        temp = temp.next;
    }
    System.out.print(">");
    }
}

}

問題は次のとおりです。

appened 3 としましょう ->>> <|3> を取得しますが、->>>> の後に 5 を追加すると <|5> を取得し、最初のアイテムを削除します。

助けてください:(

4

3 に答える 3

1

これらのステートメントの後:

while ( temp.next != null)
{
    temp = temp.next;
}

これを行う:

tmp1= new LinkInt();
tmp1.elem = item;
tmp1.next = null

tmp.next = tmp1

これの代わりに:

temp.elem = item;

印刷方法でこれを試してください:

public void print () 
{
    //outprint the array 
    //ie. <1, 2, |3, 4>
    if (  head == null) 
    {
        System.out.print("<");
        System.out.print(">");
    }
    else
    {
        LinkInt temp = head;
        System.out.print("<");
        while ( temp->next != null) 
        {
            System.out.print( "|" + temp.elem + ","); 
            temp = temp.next;
        }
        System.out.print("|" + temp.elem);}
        System.out.print(">");
    }

}
于 2013-03-01T04:37:45.007 に答える
0
LinkInt temp = head;
while ( temp.next != null){
    temp = temp.next;
}
temp.elem = item;

これが行うことは-がすでに挿入されているtemp.next is null場合です。3したがって、temp.elem = item既存の値に移動して上書きします。このようなことをしてください:-

LinkInt temp = head;
while ( temp.next != null){
    temp = temp.next;
}
//temp.elem = item; -Not needed.

temp1= new LinkInt();
temp1.elem = item;
temp1.next = null;
temp.next = temp1;
于 2013-03-01T04:40:34.583 に答える
0

この方法を持っている

public void append(int item)  
{  
    LinkInt l = new LinkInt();  
    l.elem = item;  
    if ( head == null )  
        head = l;  
    else {  
        LinkInt tmp = head;  
        while ( tmp.next != null)  
            tmp = tmp.next;  
        tmp.next = l;  
}
于 2013-03-01T04:41:00.030 に答える