我知道这是一个愚蠢的问题,但我很难删除链表中的第一个节点,即使算法在它不是第一个节点时也能工作。
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;
}
这就是我删除列表中第一个节点的方法!,感谢大家的提问/回答!