如何删除链接列表中的第一个节点



我知道这是一个愚蠢的问题,但我很难删除链表中的第一个节点,即使算法在它不是第一个节点时也能工作。

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类只有1个atribute,它是Nodo(Raiz),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是另一个有大量数据的类,我认为itt在这里不会有用。

在链表中,有一个指向第一个节点的指针和一个指向最后一个节点的指示器。您可以在(伪代码)中执行以下操作

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

您可能还需要重新分配尾部。

如果你发布你的链表类,我们可以进一步帮助你。

解决了它!

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

这就是我删除列表中第一个节点的方法!,感谢大家的提问/回答!

相关内容

  • 没有找到相关文章

最新更新