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