public void Adiciona(int posicao, T elemento) { if (posicao < 0 || posicao >= Tamanho()) { throw new Exception("A Posição " + posicao + " é Inválida!"); } else { Celula nova = new Celula(elemento); Iterador <T> it = new Iterador <T>(Inicio); int i = 0; while (it.HasNext()) { if (i != posicao - 1) { it.Next(); i++; } else { nova.SetProximo(it.GetAtual().GetProximo()); it.GetAtual().SetProximo(nova); i++; } } TamanhoLista++; } }
//Método que remove da lista em uma determinada posição public void Remove(int posicao) { if (posicao <= 0 || posicao > Tamanho()) { throw new Exception("A Posição " + posicao + " é Inválida!"); } else if (posicao == Tamanho()) { RemoveFim(); TamanhoLista--; } else { Iterador <T> it = new Iterador <T>(Inicio); int i = 0; while (it.HasNext()) { if (i != posicao - 1) { it.Next(); i++; } else { it.GetAtual().GetProximo().GetProximo().SetAnterior(it.GetAtual()); it.GetAtual().SetProximo(it.GetAtual().GetProximo().GetProximo()); i++; } } TamanhoLista--; } }
public T Recupera(int posicao) { if (TamanhoLista == 0) { throw new Exception("A lista está vazia!!"); } else if (posicao < 0 || posicao >= Tamanho()) { throw new Exception("A Posição " + posicao + " é Inválida!"); } else { Iterador <T> it = new Iterador <T>(Inicio); int i = 0; while (it.HasNext()) { if (i != posicao) { it.Next(); i++; } else { break; } } return((T)it.GetAtual().GetElemento()); } }
//Método que remove da lista em uma determinada posição public void Remove(int posicao) { if (posicao < 0 || posicao >= Tamanho()) { throw new Exception("A Posição " + posicao + " é Inválida!"); } else { Celula novoInicio = new Celula(Inicio.GetProximo(), Inicio.GetElemento()); Iterador <T> it = new Iterador <T>(Inicio); Iterador <T> itNovoInicio = new Iterador <T>(novoInicio); int i = 0; while (it.HasNext()) { if (i != posicao - 1) { itNovoInicio.Next(); it.Next(); i++; } else { itNovoInicio.Next(); it.GetAtual().SetProximo(itNovoInicio.GetAtual().GetProximo()); i++; } } TamanhoLista--; } }