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()); } }
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--; } }
//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--; } }
//Método que remove do vetor em uma determinada posição public void Remove(int posicao) { if ((posicao < 0 && posicao > Tamanho()) || (!ExisteDado(posicao))) { throw new Exception("Posição Inválida"); } Iterador <T> it = new Iterador <T>(vetor); int i = 0; while (it.HasNext()) { //percorrendo o vetor usando iterador T item; item = (T)Convert.ChangeType(it.Next(), typeof(T)); if (item != null) { if (EqualityComparer <T> .Default.Equals(item, vetor[posicao])) { vetor[i] = vetor[i + 1]; } } i++; } qntElementos--; }
//Método que adiciona no vetor public void AdicionaInicio(T elemento) { if (Tamanho() == vetor.Length) { Redimensionar(); } T elementoInicio; elementoInicio = vetor[0]; vetor[0] = elemento; Iterador <T> it = new Iterador <T>(vetor); int i = 2; T elementoAnterior = vetor[1]; vetor[1] = elementoInicio; while (it.HasNext()) { //percorrendo o vetor usando iterador if (it.Next() != null) { if (i < (vetor.Length)) { T elementoAtual = vetor[i]; vetor[i] = elementoAnterior; elementoAnterior = elementoAtual; } } i++; } qntElementos++; }
//Método que dobra o tamanho do vetor caso ele atinja o seu tamanho. public void Redimensionar() { T[] vetorCopia = new T[qntElementos]; vetorCopia = vetor; vetor = new T[qntElementos * 2]; Iterador <T> it = new Iterador <T>(vetorCopia); int i = 0; while (it.HasNext()) { //percorrendo o vetor usando iterador if (it.Next() != null) { vetor[i] = vetorCopia[i]; } i++; } }
//Método que remove do início do vetor public void RemoveInicio() { Iterador <T> it = new Iterador <T>(vetor); int i = 0; while (it.HasNext()) { //percorrendo o vetor usando iterador if (it.Next() != null) { if (i < (vetor.Length - 1)) { vetor[i] = vetor[i + 1]; } i++; } } qntElementos--; }
//Método que remove do fim do vetor public void RemoveFim() { T[] vetorNovo = new T[qntElementos]; Iterador <T> it = new Iterador <T>(vetor); int i = 0; while (it.HasNext()) { //percorrendo o vetor usando iterador if (it.Next() != null) { if (i < (vetor.Length - 2)) { vetorNovo[i] = vetor[i]; } } i++; } vetor = new T[qntElementos]; vetor = vetorNovo; qntElementos--; }