コード例 #1
0
        public void Remover(NoLista <Dado> ant, NoLista <Dado> atu)
        {
            if (EstaVazia)
            {
                return;
            }

            // se o fluxo de execução segue para cá, a lista não
            // está vazia e, portanto, temos ao menos um nó

            if (atu == primeiro)          // queremos excluir o 1o nó
            {
                primeiro = primeiro.Prox; // aponta o 2o nó
                if (primeiro == null)
                {
                    ultimo = null;
                }
            }
            else
            if (atu == ultimo)      // vamos excluir o último nó
            {
                ant.Prox = null;
                ultimo   = ant;     // aponta quem era penúltimo
            }
            else
            {
                ant.Prox = atu.Prox;
            }

            quantosNos--;  // removemos um nó, acertamos a contagem
        }
コード例 #2
0
        public void InserirAntesDoInicio(Dado informacao)
        {
            var novoNo = new NoLista <Dado>(informacao, null);

            if (EstaVazia)
            {
                ultimo = novoNo;
            }
            else
            {
                novoNo.Prox = primeiro;
            }
            primeiro = novoNo;
            quantosNos++;
        }
コード例 #3
0
        public void InserirAposFim(Dado informacao)
        {
            NoLista <Dado> novoNo = new NoLista <Dado>(informacao, null);

            if (EstaVazia)
            {
                primeiro = novoNo;
            }
            else
            {
                ultimo.Prox = novoNo;
            }
            ultimo = novoNo;
            quantosNos++;
        }
コード例 #4
0
        }                  // se a chave procurada foi ou não encontrado

        private void InserirNoMeio(Dado dados)
        {
            NoLista <Dado> novoNo = new NoLista <Dado>(dados, null);

            // ExisteDado() encontrou intervalo de inclusão do novo nó

            anterior.Prox = novoNo; // liga anterior ao novo
            novoNo.Prox   = atual;  // e novo no atual

            if (anterior == ultimo) // se incluiu ao final da lista,
            {
                ultimo = novoNo;    // atualiza o apontador ultimo
            }
            quantosNos++;           // incrementa número de nós da lista
        }
コード例 #5
0
        public void Inverter()
        {
            NoLista <Dado> um, dois, tres;

            um = dois = tres = null;

            if (!EstaVazia)
            {
                um   = primeiro;
                dois = primeiro.Prox;
                while (dois != null)
                {
                    tres      = dois.Prox;
                    dois.Prox = um;
                    um        = dois;
                    dois      = tres;
                }
                ultimo      = primeiro;
                primeiro    = um;
                ultimo.Prox = null;
            }
        }
コード例 #6
0
 public ListaSimples()
 {
     primeiro   = null;
     ultimo     = null;
     quantosNos = 0;
 }
コード例 #7
0
 public NoLista(Dado info, NoLista <Dado> prox)
 {
     this.Info = info;
     this.Prox = prox;
 }