public void RemoverDoFinal() { if (TotalDeElementos == 1) { RemoverDoComeco(); } else { Celula <T> penultima = Ultima.Anterior; penultima.Proxima = Primeira; Primeira.Proxima = penultima; Ultima = penultima; TotalDeElementos--; } }
private Celula <T> PegarCelula(int posicao) { if (!PosicaoOcupada(posicao)) { throw new ArgumentException("Posição não existe"); } Celula <T> atual = Primeira; for (int i = 0; i < posicao; i++) { atual = atual.Proxima; } return(atual); }
public void Adicionar(T elemento) { if (EstaVazia()) { AdicionarNoComeco(elemento); } else { Celula <T> nova = new Celula <T>(elemento); Ultima.Proxima = nova; nova.Anterior = Ultima; Ultima = nova; Primeira.Anterior = Ultima; Ultima.Proxima = Primeira; TotalDeElementos++; } }
public void RemoverDoComeco() { if (EstaVazia()) { throw new ArgumentException("Lista vazia. Impossivel remover!"); } if (Primeira == Ultima) { Primeira = null; Ultima = null; } else { Primeira = Primeira.Proxima; Primeira.Anterior = Ultima; Ultima.Proxima = Primeira; } TotalDeElementos--; }
public void Adicionar(int posicao, T elemento) { if (posicao == 0) { AdicionarNoComeco(elemento); } else if (posicao == TotalDeElementos) { Adicionar(elemento); } else { Celula <T> anterior = PegarCelula(posicao - 1); Celula <T> proxima = anterior.Proxima; Celula <T> nova = new Celula <T>(elemento); nova.Anterior = anterior; nova.Proxima = proxima; anterior.Proxima = nova; proxima.Anterior = nova; TotalDeElementos++; } }
public override string ToString() { // Verificando se a Lista esta vazia if (TotalDeElementos == 0) { return("[]"); } StringBuilder builder = new StringBuilder("["); Celula <T> atual = Primeira; // Percorrendo ate o penultimo elemento. for (int i = 0; i < TotalDeElementos - 1; i++) { builder.Append(atual.Elemento); builder.Append(", "); atual = atual.Proxima; } // ultimo elemento builder.Append(atual.Elemento); builder.Append("]"); return(builder.ToString()); }
public void Limpar() { Primeira = null; Ultima = null; TotalDeElementos = 0; }
public ListaDuplaComNoCabeca() { Cabeca = new Celula <T>(); Cabeca.Proxima = this.Ultima; Cabeca.Anterior = this.Primeira; }