/// <summary> /// Método para inserir um valor na lista /// </summary> /// <param name="anterior">o nodo que será o anterior ao nodo inserido. /// Se o novo nodo for o primeiro, passe null</param> /// <param name="valor">o valor a ser inserido</param> private void InserirNaPosicao(NodoJogador anterior, Jogador valor) { NodoJogador novo = new NodoJogador(); novo.Dado = valor; if (anterior == null) { if (qtde == 0) { primeiro = novo; novo.Anterior = null; } else { primeiro.Anterior = novo; novo.Proximo = primeiro; primeiro = novo; } } else { novo.Anterior = ultimo; novo.Proximo = anterior.Proximo; anterior.Proximo = novo; } if (novo.Proximo == null) { ultimo = novo; } qtde++; }
/// <summary> /// Retorna um /// </summary> /// <returns></returns> public void PesquisaJogador(Jogador valor) { NodoJogador aux = primeiro; while (aux != null) { if (aux.Dado.Nome == valor.Nome || aux.Dado.Numero == valor.Numero) { throw new Exception("Jogador ou numero já cadastrado"); } aux = aux.Proximo; } }
/// <summary> /// Retorna um string com todos os elementos da lista concatenados /// </summary> /// <returns></returns> public string Listar() { string r = "Jogadores: "; NodoJogador aux = primeiro; while (aux != null) { r = r + Environment.NewLine + " " + "Nºcamisa: " + aux.Dado.Numero + " - Nome: " + aux.Dado.Nome + " - POSICAO: " + aux.Dado.Posicao; aux = aux.Proximo; } return(r.Trim()); }
public bool PesquisaJogador(string valor) { NodoJogador aux = primeiro; while (aux != null) { if (aux.Dado.Nome == valor) { return(true); } aux = aux.Proximo; } return(false); }
/// <summary> /// Insere em uma posição, iniciando do 0 /// </summary> /// <param name="valor">valor</param> /// <param name="posicao">posicao iniciando do 1</param> public void InserirNaPosicao(Jogador valor) { //Verificar Posição int contagem = 0; NodoJogador aux = primeiro; while (aux != null) { if (valor.Numero > aux.Dado.Numero) { contagem++; } else { break; } aux = aux.Proximo; } if (contagem > qtde || contagem < 0) { throw new Exception("Não é possível inserir."); } if (qtde >= 11) { throw new Exception("Não é possível inserir. Numero maxio atingido"); } if (contagem == 0) { InserirNoInicio(valor); } else { //descobre qual é o nodo anterior ao que será incluído NodoJogador aux2 = primeiro; for (int i = 1; i < contagem; i++) { aux2 = aux2.Proximo; } InserirNaPosicao(aux2, valor); } }
/// <summary> /// Insere um valor no final da lista /// </summary> /// <param name="valor"></param> public void InserirNoFim(Jogador valor) { if (qtde == 0) { InserirNoInicio(valor); } else { NodoJogador aux = primeiro; while (aux.Proximo != null) { aux = aux.Proximo; } InserirNaPosicao(aux, valor); } }
public void Removerjogador(string jogador) { int contagem = 0; NodoJogador aux = primeiro; while (aux != null) { if (aux.Dado.Nome == jogador) { RemoverDaPosicao(contagem); VariaveisGlobais.jogadorEncontrado = true; return; } contagem++; aux = aux.Proximo; } }
public void RemoverDaPosicao(int posicao) { if (posicao >= qtde || posicao < 0 || qtde == 0) { throw new Exception("Não é possível remover."); } VariaveisGlobais.jogadorEncontrado = true; if (posicao == 0) { if (primeiro.Proximo == null) { primeiro = null; ultimo = null; } else { primeiro = primeiro.Proximo; primeiro.Anterior = null; } } else { //descobre qual é o nodo anterior que será excluido NodoJogador aux = primeiro; for (int i = 1; i < posicao; i++) { aux = aux.Proximo; } if (posicao + 1 == qtde) { aux.Proximo = aux.Proximo.Proximo; ultimo = aux; } else { aux.Proximo = aux.Proximo.Proximo; aux.Proximo.Anterior = aux; } } qtde--; }