Beispiel #1
0
        public ListaSimples <Dado> Juntar(
            ListaSimples <Dado> outra)
        {
            var lista3 = new ListaSimples <Dado>();

            this.atual  = this.primeiro;
            outra.atual = outra.primeiro;

            NoLista <Dado> aux = null;

            while (this.atual != null && outra.atual != null)
            {
                if (this.atual.Info.CompareTo(
                        outra.atual.Info) < 0)
                {
                    aux = this.atual.Prox;
                    lista3.InserirAposFim(this.atual);
                    this.atual = aux;
                    this.quantosNos--;
                }
                else
                if (outra.atual.Info.CompareTo(
                        this.atual.Info) < 0)
                {
                    aux = outra.atual.Prox;
                    lista3.InserirAposFim(outra.atual);
                    outra.atual = aux;
                    outra.quantosNos--;
                }
                else
                {
                    aux = this.atual.Prox;
                    lista3.InserirAposFim(this.atual);
                    this.atual  = aux;
                    outra.atual = outra.atual.Prox;
                    this.quantosNos--;
                    outra.quantosNos--;
                }
            }  // while

            if (lista3.ultimo != null) // se houve casamento
            {
                if (this.atual == null) // acabou o percurso da lista1
                {
                    lista3.ultimo.Prox = outra.atual;
                    lista3.ultimo      = outra.ultimo;
                    lista3.quantosNos += outra.quantosNos;
                }
                else
                {
                    lista3.ultimo.Prox = this.atual;
                    lista3.ultimo      = this.ultimo;
                    lista3.quantosNos += this.quantosNos;
                }
            }
            this.primeiro   = this.ultimo = outra.primeiro = outra.ultimo = null;
            this.quantosNos = outra.quantosNos = 0;
            return(lista3);
        }
Beispiel #2
0
        public void ordenar()
        {
            ListaSimples <Dado> ordenada = new ListaSimples <Dado>();

            while (!this.EstaVazia)
            {
                // achar o menor de todos
                // remover o menor de todos
                // incluir o menor de todos já removido na lista ordenada
            }
            this.primeiro   = ordenada.primeiro;
            this.ultimo     = ordenada.ultimo;
            this.quantosNos = ordenada.quantosNos;
        }
Beispiel #3
0
 public void SepararEmDuasListas(
     ref ListaSimples <Dado> l1,
     ref ListaSimples <Dado> l2)
 {
     l1 = new ListaSimples <Dado>();
     l2 = new ListaSimples <Dado>();
     while (!this.EstaVazia)
     {
         atual = this.primeiro;
         NoLista <Dado> aux = atual.Prox;
         if (atual.Info.Separar())
         {
             l2.InserirAposFim(atual);
         }
         else
         {
             l1.InserirAposFim(atual);
         }
         this.primeiro = aux;
         this.quantosNos--;
     }
     this.ultimo = null;
 }