私は自分の二重リンクリストを作成していますが、指定された要素、現在のコードを削除するのに問題があります:
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!!!
それを解決するための提案はありますか??