/// <summary> /// Torna possível iterar sobre a CPilha usando o comando foreach /// </summary> public IEnumerator GetEnumerator() { for (CCelula aux = Topo; aux != null; aux = aux.Prox) { yield return(aux.Item); } }
/// <summary> /// Localiza o Item passado por parâmetro e o remove da Lista /// </summary> /// <param name="ValorItem">Item a ser removido da lista.</param> public void Remove(Object ValorItem) { if (Primeira != Ultima) { CCelula aux = Primeira; bool achou = false; while (aux.Prox != null && !achou) { achou = aux.Prox.Item.Equals(ValorItem); if (!achou) { aux = aux.Prox; } } if (achou) // achou o elemento { aux.Prox = aux.Prox.Prox; if (aux.Prox == null) { Ultima = aux; } Qtde--; } } }
/// <summary> /// Imprime todos os elementos da lista usando o comando for /// </summary> public void ImprimeFor() { for (CCelula aux = Primeira.Prox; aux != null; aux = aux.Prox) { Console.Write(aux.Item); } }
/// <summary> /// Insere o novo Item no Topo da Pilha /// </summary> /// <param name="ValorItem">Um Object contendo o Item a ser inserido no Topo da Pilha.</param> public void Empilha(Object ValorItem) { CCelula aux = Topo; Topo = new CCelula(ValorItem); Topo.Prox = aux; Qtde++; }
/// <summary> /// Insere o novo item no topo da Pilha /// </summary> /// <param name="valorItem">Um Object contendo o item a ser inserido no topo da Pilha.</param> public void Empilha(Object valorItem) { CCelula aux = topo; topo = new CCelula(valorItem); topo.prox = aux; Qtde++; }
/// <summary> /// Remove o primeiro Item da lista fazendo com que a célula seguinte à célula cabeça se torne a nova célula cabeça. Não retorna o Item removido. /// </summary> public void RemoveComecoSemRetorno() { if (Primeira != Ultima) { Primeira = Primeira.Prox; Qtde--; } }
/// <summary> /// Imprime todos os elementos simulando formato de lista: [/]->[7]->[21]->[13]->null /// </summary> public void ImprimeFormatoLista() { Console.Write("[/]->"); for (CCelula aux = Primeira.Prox; aux != null; aux = aux.Prox) { Console.Write("[" + aux.Item.ToString() + "]->"); } Console.WriteLine("null"); }
/// <summary> /// Insere um novo Item no começo da lista. /// </summary> /// <param name="ValorItem">O Item a ser inserido.</param> public void InsereComeco(Object ValorItem) { Primeira.Prox = new CCelula(ValorItem, Primeira.Prox); if (Primeira.Prox.Prox == null) { Ultima = Primeira.Prox; } Qtde++; }
/// <summary> /// Verifica se o Item passado como parâmetro está contido na lista. (Obs: usa o comando FOR) /// </summary> /// <param name="elemento">O Item a ser localiado.</param> /// <returns>Retorna TRUE caso o Item esteja presente na lista.</returns> public bool ContemFor(Object elemento) { bool achou = false; for (CCelula aux = Primeira.Prox; aux != null && !achou; aux = aux.Prox) { achou = aux.Item.Equals(elemento); } return(achou); }
/// <summary> /// Imprime todos os elementos da lista usando o comando while /// </summary> public void Imprime(bool ItemPorLinha) { CCelula aux = Primeira.Prox; while (aux != null) { Console.WriteLine(aux.Item); aux = aux.Prox; } }
/// <summary> /// Verifica se o item passado como parâmetro está contido na lista. (Obs: usa o comando FOR) /// </summary> /// <param name="elemento">Um object contendo o item a ser localiado.</param> /// <returns>Retorna TRUE caso o item esteja presente na lista.</returns> public bool ContemFor(Object elemento) { bool achou = false; for (CCelula aux = topo; aux != null && !achou; aux = aux.prox) { achou = aux.item.Equals(elemento); } return(achou); }
/// <summary> /// Remove e retorna o primeiro Item da lista (remoção lógica, ou seja, remove a célula cabeça fazendo com que a célula seguinte ela se torne a nova célula cabeça). /// </summary> /// <returns>Um Object contendo o Item removido ou null caso a lista esteja vazia.</returns> public Object RemoveRetornaComecoSimples() { // Verifica se há elementos na lista if (Primeira != Ultima) { Primeira = Primeira.Prox; Qtde--; return(Primeira.Item); } return(null); }
/// <summary> /// Verifica se o Item passado como parâmetro está contido na lista. /// </summary> /// <param name="elemento">O Item a ser localiado.</param> /// <returns>Retorna TRUE caso o Item esteja presente na lista.</returns> public bool Contem(Object elemento) { bool achou = false; CCelula aux = Primeira.Prox; while (aux != null && !achou) { achou = aux.Item.Equals(elemento); aux = aux.Prox; } return(achou); }
/// <summary> /// Verifica se o item passado como parâmetro está contido na lista. /// </summary> /// <param name="elemento">Um object contendo o item a ser localiado.</param> /// <returns>Retorna TRUE caso o item esteja presente na lista.</returns> public bool Contem(Object elemento) { bool achou = false; CCelula aux = topo; while (aux != null && !achou) { achou = aux.item.Equals(elemento); aux = aux.prox; } return(achou); }
public bool pesquisa(Object elemento) { bool achou = false; CCelula aux = Frente.Prox; while (aux != null && !achou) { achou = aux.Item.Equals(elemento); aux = aux.Prox; } return(achou); }
/// <summary> /// Retira e retorna o item do topo da Pilha. /// </summary> /// <returns>Um Object contendo o item retirado do topo da Pilha. Caso a Pilha esteja vazia retorna null.</returns> public Object Desempilha() { Object item = null; if (topo != null) { item = topo.item; topo = topo.prox; Qtde--; } return(item); }
/// <summary> /// Retira e retorna o primeiro elemento da fila. /// </summary> /// <returns>Um Object contendo o primeiro elemento da fila. Caso a fila esteja vazia retorna null.</returns> public Object Desenfileira() { Object Item = null; if (Frente != Tras) { Frente = Frente.Prox; Item = Frente.Item; Qtde--; } return(Item); }
/// <summary> /// Retira e retorna o Item do Topo da Pilha. /// </summary> /// <returns>Um Object contendo o Item retirado do Topo da Pilha. Caso a Pilha esteja vazia retorna null.</returns> public Object Desempilha() { Object Item = null; if (Topo != null) { Item = Topo.Item; Topo = Topo.Prox; Qtde--; } return(Item); }
public void Enfileira(Paciente item) // Defina os parâmetros que você achar necessários { if (Qtde == 0) { insertAt(1, new CCelula(item)); } else { int prioridade = pegaPosicaoPrioridade(item.pulseira); insertAt(prioridade, new CCelula(item)); } Tras = GetTras(); Qtde++; }
/// <summary> /// Remove o último Item da lista sem retorná-lo. /// </summary> public void RemoveFimSemRetorno() { if (Primeira != Ultima) { CCelula aux = Primeira; while (aux.Prox != Ultima) { aux = aux.Prox; } Ultima = aux; Ultima.Prox = null; Qtde--; } }
public CCelula GetTras() { CCelula aux = Frente.Prox; while (aux != null) { if (aux.Prox.Prox == null) { return(aux); } aux = aux.Prox; } return(null); }
/// <summary> /// Remove e retorna o primeiro Item da lista (remoção física, ou seja, elimina a célula que contém o elemento). /// </summary> /// <returns>Um Object contendo o Item removido ou null caso a lista esteja vazia.</returns> public Object RemoveRetornaComeco() { // Verifica se há elementos na lista if (Primeira != Ultima) { CCelula aux = Primeira.Prox; Primeira.Prox = aux.Prox; if (Primeira.Prox == null) // Se a célula cabeça está apontando para null, significa que o único elemento da lista foi removido { Ultima = Primeira; } Qtde--; return(aux.Item); } return(null); }
public Object[] imprimir() { Object[] itens = new Object[Qtde]; int index = 0; if (Frente != Tras) { for (CCelula aux = Frente.Prox; aux != null; aux = aux.Prox) { itens[index] = aux.Item; index++; } } return(itens); }
private int pegaPosicaoPrioridade(Pulseira pulseira) { CCelula aux = Frente.Prox; int prioridade = 1; while (aux.Item != null) { Paciente paciente = (Paciente)aux.Item; if (pulseira >= paciente.pulseira) { prioridade++; } aux = aux.Prox; } return(prioridade); }
/// <summary> /// Remove o último Item da lista. /// </summary> /// <returns>Um Object contendo o Item removido ou null caso a lista esteja vazia.</returns> public Object RemoveRetornaFim() { if (Primeira != Ultima) { CCelula aux = Primeira; while (aux.Prox != Ultima) { aux = aux.Prox; } CCelula aux2 = aux.Prox; Ultima = aux; Ultima.Prox = null; Qtde--; return(aux2.Item); } return(null); }
/// <summary> /// Insere um novo item no fundo da Pilha. /// </summary> /// <param name="valorItem">Um Object contendo o item a ser inserido no fundo da Pilha.</param> public void VaiProFundo(Object valorItem) { if (topo != null) { CCelula aux = topo; CCelula auxAnt = null; while (aux != null) { auxAnt = aux; aux = aux.prox; } auxAnt.prox = new CCelula(valorItem); Qtde++; } else { Empilha(valorItem); } }
/// <summary> /// Retorna o Item contido na posição p da lista. /// </summary> /// <param name="p">A posição desejada. A primeira posição da lista é a posição 1.</param> /// <returns>Um Object contendo o Item da posição p da lista.</returns> public Object RetornaIndice(int Posicao) { // EXERCÍCIO : deve retornar o elemento da posição p passada por parâmetro // [cabeça]->[7]->[21]->[13]->null // retornaIndice(2) deve retornar o elemento 21. retornaIndice de uma posiçao inexistente deve retornar null. // Se é uma posição válida e a lista possui elementos if ((Posicao >= 1) && (Posicao <= Qtde) && (Primeira != Ultima)) { int i = 1; CCelula aux = Primeira.Prox; // Procura a posição a ser inserido while (i < Posicao) { aux = aux.Prox; i++; } return(aux.Item); } return(null); }
private void insertAt(int i, CCelula celula) { CCelula atual = Frente.Prox; while (i-- != 0) { if (i == 0) { CCelula temporaria = new CCelula(); temporaria.Item = atual.Item; temporaria.Prox = atual.Prox; celula.Prox = temporaria; atual.Item = celula.Item; atual.Prox = celula.Prox; } else { atual = atual.Prox; } } }
/// <summary> /// Remove o elemento na posição passada como parâmetro. /// </summary> /// <param name="Posicao">A posição a ser removida. OBS: o primeiro elemento está na posição 1, e assim por diante.</param> /// <returns>Retorna TRUE se a posição existe e foi removida com sucesso, e FALSE caso a posição não exista.</returns> public bool RemoveIndice(int Posicao) { // Se é uma posição válida e a lista possui elementos if ((Posicao >= 1) && (Posicao <= Qtde) && (Primeira != Ultima)) { int i = 0; CCelula aux = Primeira; while (i < Posicao - 1) { aux = aux.Prox; i++; } aux.Prox = aux.Prox.Prox; if (aux.Prox == null) { Ultima = aux; } Qtde--; return(true); } return(false); }
/// <summary> /// Remove e retorna o elemento na posição passada como parâmetro. /// </summary> /// <param name="Posicao">A posição a ser removida. OBS: o primeiro elemento está na posição 1, e assim por diante.</param> /// <returns>Um object contendo o elemento removido da lista. Caso a posição seja inválida, retorna null.</returns> public Object RemoveRetornaIndice(int Posicao) { // Se é uma posição válida e a lista possui elementos if ((Posicao >= 1) && (Posicao <= Qtde) && (Primeira != Ultima)) { int i = 0; CCelula aux = Primeira; while (i < Posicao - 1) { aux = aux.Prox; i++; } CCelula aux2 = aux.Prox; aux.Prox = aux.Prox.Prox; if (aux.Prox == null) { Ultima = aux; } Qtde--; return(aux2.Item); } return(null); }