0

私は自分の二重リンクリストを作成していますが、指定された要素、現在のコードを削除するのに問題があります:

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!!!

それを解決するための提案はありますか??

4

0 に答える 0