private Celula <T> PegaCelula(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 bool Contem(T item) { Celula <T> atual = this.Primeira; while (atual != null) { if (atual.Elemento.Equals(item)) { return(true); } atual = atual.Proxima; } return(false); }
public void RemoveDoComeco() { if (!this.PosicaoOcupada(0)) { throw new ArgumentException("Posição não existe"); } this.Primeira = this.Primeira.Proxima; this.TotalDeElementos--; if (this.TotalDeElementos == 0) { this.Ultima = null; } }
public void Adiciona(T elemento) { if (this.TotalDeElementos == 0) { AdicionaNoComeco(elemento); } else { Celula <T> novaCelula = new Celula <T>(elemento); this.Ultima.Proxima = novaCelula; novaCelula.Anterior = this.Ultima; this.Ultima = novaCelula; this.TotalDeElementos++; } }
public void AdicionaNoComeco(T elemento) { if (this.TotalDeElementos == 0) { Celula <T> novaCelula = new Celula <T>(elemento); this.Primeira = novaCelula; this.Ultima = novaCelula; } else { Celula <T> novaCelula = new Celula <T>(Primeira, elemento); this.Primeira.Anterior = novaCelula; this.Primeira = novaCelula; } this.TotalDeElementos++; }
public void RemoveDoFim() { if (!this.PosicaoOcupada(this.TotalDeElementos - 1)) { throw new ArgumentException("Posição não existe"); } if (this.TotalDeElementos == 1) { this.RemoveDoComeco(); } else { Celula <T> penultima = this.Ultima.Anterior; penultima.Proxima = null; this.Ultima = penultima; this.TotalDeElementos--; } }
public void Adiciona(int posicao, T elemento) { if (posicao == 0) { this.AdicionaNoComeco(elemento); } else if (posicao == this.TotalDeElementos) { this.Adiciona(elemento); } else { Celula <T> anterior = PegaCelula(posicao - 1); Celula <T> proxima = anterior.Proxima; Celula <T> nova = new Celula <T>(anterior.Proxima, elemento); nova.Anterior = anterior; anterior.Proxima = nova; proxima.Anterior = nova; this.TotalDeElementos++; } }
public string Imprime() { if (this.TotalDeElementos == 0) { return("[]"); } StringBuilder builder = new StringBuilder("["); Celula <T> atual = Primeira; for (int i = 0; i < this.TotalDeElementos - 1; i++) { builder.Append(atual.Elemento); builder.Append(", "); atual = atual.Proxima; } builder.Append(atual.Elemento); builder.Append("]"); return(builder.ToString()); }