我正在构建自己的双向链表,并且在删除指定元素时遇到问题,我当前的代码:
public void BorrarOrdenado(int index)
{
Nodo<T> nodo = primero;
while (index >= 0 && index < numElementos)
{
nodo = nodo.sgte;
}
if (nodo != null)
{
if (nodo == primero && nodo == ultimo)
{
primero = ultimo = null;
}
if (nodo == primero)
{
primero = primero.sgte;
return;
}
if (nodo == ultimo)
{
ultimo = ultimo.sgte;
return;
}
Nodo<T> anterior = nodo.ant;
Nodo<T> siguiente = nodo.sgte;
anterior.sgte = siguiente;
siguiente.ant = anterior;
}
}
问题是当我想在另一个元素之前删除后添加新元素时,代码测试:
ListaGenerica<int> instanciaLista1 = new ListaGenerica<int>();
instanciaLista1.AñadirOrdenado((int)3);
instanciaLista1.AñadirOrdenado((int)2);
instanciaLista1.AñadirOrdenado((int)7);
instanciaLista1.AñadirOrdenado((int)5);
Console.WriteLine(instanciaLista1.ToString());
// ORDENADO : 2 => 3 => 5 => 7
bool esta = instanciaLista1.Buscar((int)5);
Console.WriteLine(esta);
// TRUE
instanciaLista1.setElemento(2, (int)6);
// SI EXISTE
Console.WriteLine(instanciaLista1.ToString());
instanciaLista1.Borrar(1);
Console.WriteLine(instanciaLista1.ToString());
// 2 => 6 => 7
instanciaLista1.AñadirOrdenado((int)8);
Console.WriteLine(instanciaLista1.ToString());
// 2 => 5 => 7 => 8 . THE PROBLEM IS HERE!!!
有什么建议可以解决吗??