Esempio n. 1
0
        public void AgregarDocumento(Documento doc)
        {
            LinkedListNode <Documento> nuevoNodo = new LinkedListNode <Documento>(doc);
            //Primero busco en la List un documento con la misma prioridad
            LinkedListNode <Documento> marcador = BuscarMarcador(doc.Prioridad);

            //No encontre ninguno con prioridad igual o menor por lo tanto éste nodo debe ser el primero en la LinkedList
            if (marcador == null)
            {
                Marcadores.Add(nuevoNodo);
                Documentos.AddFirst(nuevoNodo);
            }
            //Si encontré un nodo, lo uso como referencia para agregar el nuevo a la LinkedList
            else
            {
                Documentos.AddAfter(marcador, nuevoNodo);
                //Para los marcadores tengo que fijarme si el nodo que recuperé tiene la misma prioridad que el que estoy agregando
                //Si es así, tengo que quitar el existente para reemplazar. Si no, sólo agrego
                if (marcador.Value.Prioridad == nuevoNodo.Value.Prioridad)
                {
                    Marcadores.Remove(marcador);
                }
                Marcadores.Add(nuevoNodo);
            }
        }