コード例 #1
0
 /// <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);
     }
 }
コード例 #2
0
 /// <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--;
         }
     }
 }
コード例 #3
0
 /// <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);
     }
 }
コード例 #4
0
            /// <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++;
            }
コード例 #5
0
        /// <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++;
        }
コード例 #6
0
 /// <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--;
     }
 }
コード例 #7
0
 /// <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");
 }
コード例 #8
0
 /// <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++;
 }
コード例 #9
0
            /// <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);
            }
コード例 #10
0
            /// <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;
                }
            }
コード例 #11
0
        /// <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);
        }
コード例 #12
0
 /// <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);
 }
コード例 #13
0
            /// <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);
            }
コード例 #14
0
        /// <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);
        }
コード例 #15
0
        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);
        }
コード例 #16
0
        /// <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);
        }
コード例 #17
0
            /// <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);
            }
コード例 #18
0
            /// <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);
            }
コード例 #19
0
 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++;
 }
コード例 #20
0
            /// <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--;
                }
            }
コード例 #21
0
            public CCelula GetTras()
            {
                CCelula aux = Frente.Prox;

                while (aux != null)
                {
                    if (aux.Prox.Prox == null)
                    {
                        return(aux);
                    }

                    aux = aux.Prox;
                }

                return(null);
            }
コード例 #22
0
 /// <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);
 }
コード例 #23
0
        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);
        }
コード例 #24
0
            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);
            }
コード例 #25
0
            /// <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);
            }
コード例 #26
0
 /// <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);
     }
 }
コード例 #27
0
 /// <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);
 }
コード例 #28
0
            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;
                    }
                }
            }
コード例 #29
0
 /// <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);
 }
コード例 #30
0
 /// <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);
 }