public object Next() { Object elemento = Atual.GetElemento(); Atual = Atual.GetProximo(); return(elemento); }
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 } }
//Método que adiciona no inicio da lista public void AdicionaInicio(T elemento) { CelulaDupla nova = new CelulaDupla(elemento); if (TamanhoLista == 0) { Inicio = Fim = nova; TamanhoLista++; } else { nova.SetProximo(Inicio); //O próximo do novo Nó será o atual primeiro Inicio.SetAnterior(nova); //O anterior do atual primeiro será o novo Nó Inicio = nova; // Atualiza-se o primeiro para o novo Nó TamanhoLista++; // incrementa o tamanho da lista } }
public Iterador(CelulaDupla atual) { Atual = atual; }
//Método que limpa/apaga todas as posições da lista public void Limpar() { Inicio = new CelulaDupla(); Fim = new CelulaDupla(); TamanhoLista = 0; }