0

これがばかげた質問であることはわかっていますが、最初のノードではない場合にアルゴリズムが機能するにもかかわらず、リンクされたリストの最初のノードを削除するのに苦労しています。

public boolean eliminarInscripcion(int DNI)
{
    boolean flag=false;
    Nodo aux, aux2;        //Nodo=Node

    if(Raiz!=null) //If the list isn't empty
    {
        aux=Raiz;  //Raiz=Root
        if(aux.getInfo().getDni() == DNI)  //Is the first node the one i'm looking for?
        {
            aux.setProx(aux.getProx()); //Here is the main problem. (I've tried many things, this is one of them, looks silly anyway.)
            flag=true;
        }
        else
        {
            aux2=aux.getProx();  //getProx=getNext
            while(aux.getProx()!=null)
            {
                if (aux2.getInfo().getDni()==DNI)
                {
                    aux.setProx(aux2.getProx());
                    flag=true;
                    break;
                }
                else
                {
                    aux=aux.getProx();
                    aux2=aux2.getProx();
                }
            }
        } 
    }
    return flag;   
}

ああ、そしてどうもありがとう!

編集: さらに情報を追加します: List クラスには Nodo (Raiz) である属性が 1 つしかなく、nodo クラスは次のとおりです。

public class Nodo
{
private Inscripcion Info;
private Nodo Prox;

public Nodo()
{
    Info = null;
    Prox = null;
}

public Nodo(Inscripcion info, Nodo prox)
{
    this.Info = new Inscripcion(info);
    this.Prox = prox;
}

public Inscripcion getInfo() 
{
    return Info;
}

public void setInfo(Inscripcion I) 
{
    this.Info = new Inscripcion(I);
}

public Nodo getProx() 
{
    return Prox;
}

public void setProx(Nodo P) 
{
    this.Prox = P;
}

@Override
public String toString()
{
    return Info.toString();
}

}

Inscripcion は、多くのデータを持つ別のクラスです。ここでは役に立たないと思います。

4

2 に答える 2

2

リンクされたリストには、最初のノードへのポインターと最後のノードへのポインターがあります。(疑似コード)で次のことを行います

LinkedList list = myList
Node node = list.head // get head
list.head = node.next // set new head to the second node in the list
node.next = null // remove the reference to the next node from the old head

テールを再割り当てする必要がある場合もあります。

リンクされたリストのクラスを投稿すると、さらに支援できます。

于 2013-02-06T21:32:38.577 に答える
0

解決しました!

if(aux.getInfo().getDni() == DNI)
        {
            Raiz=aux.getProx();
            flag=true;
        }

それが私のリストの最初のノードを削除する方法です! 質問/回答をありがとうございました!

于 2013-02-07T19:00:56.177 に答える