public void Adiciona(int posicao, T elemento) { if (posicao <= 0 || posicao > Tamanho()) { throw new Exception("A Posição " + posicao + " é Inválida!"); } else if (posicao == Tamanho()) { AdicionaFim(elemento); TamanhoLista++; } else { CelulaDupla nova = new CelulaDupla(elemento); Iterador <T> it = new Iterador <T>(Inicio); int i = 0; while (it.HasNext()) { if (i != posicao - 1) { it.Next(); i++; } else { nova.SetAnterior(it.GetAtual()); nova.SetProximo(it.GetAtual().GetProximo()); it.GetAtual().SetProximo(nova); it.GetAtual().GetProximo().GetProximo().SetAnterior(it.GetAtual().GetProximo()); i++; } } TamanhoLista++; } }
public void AdicionaFim(T elemento) { CelulaDupla nova = new CelulaDupla(elemento); if (TamanhoLista == 0) { Inicio = Fim = nova; TamanhoLista++; } else { nova.SetAnterior(Fim); //O anterior do novo Nó será o atual ultimo Fim.SetProximo(nova); //O proximo do atual ultimo será o novo Nó Fim = nova; // Atualiza-se o ultimo para o novo Nó TamanhoLista++; // incrementa o tamanho da lista } }