コード例 #1
0
        public int empilhar(bool mudouPonteiro, ref bool desempilhou, ref bool empilharAtivou)
        {
            int selecionaMtd = 1;

            //estrutura responsavel pelo empilhamento consecutivo
            while (selecionaMtd == 1)
            {
                //Estrutura que impede que após a mudança de ponteiro se pegue o primeiro voo
                if (mudouPonteiro == false)
                {
                    aeroportoDoVoo           = indiceDestinoDoVoo;
                    primeiroAviaoDoAeroporto = vetor[aeroportoDoVoo].next;
                }
                else
                {
                    mudouPonteiro = false;
                }

                //Empilha o voo posterior ao voo desempilhado
                if (desempilhou)
                {
                    indiceDestinoDoVoo = primeiroAviaoDoAeroporto.indiceCidadeDestino;
                    //primeiroAviaoDoAeroporto = vetor[aeroportoDoVoo].next;
                    desempilhou = false;
                    ++maxConexoes;
                }

                //Verifica se pode empilhar, isto é, se o voo não vai para a origem ou para o destino
                empilharAtivou = true;
                selecionaMtd   = casosMudancaPonteiro(ref empilharAtivou);
                empilharAtivou = false;

                //SelecionaMtd==1-->Pode se empilhar o voo não vai para a origem ou para o destino
                if (selecionaMtd == 1)
                {
                    indiceDestinoDoVoo = primeiroAviaoDoAeroporto.indiceCidadeDestino;
                    --maxConexoes;

                    //Deve se percorrer tudo
                    if (maxConexoes == 0)
                    {
                        selecionaMtd = 3;//selecionaMtd3-->percorre tudo
                    }
                    else
                    {
                        string siglaOrigem  = encontraSiglaAeroportoPeloIndice(aeroportoDoVoo);
                        string siglaDestino = encontraSiglaAeroportoPeloIndice(primeiroAviaoDoAeroporto.indiceCidadeDestino);
                        string infomacao    = null;
                        infomacao += ":" + " (" + primeiroAviaoDoAeroporto.numeroVoo + ") " + siglaOrigem + " - " + siglaDestino;
                        objPilha.add(aeroportoDoVoo, indiceDestinoDoVoo, primeiroAviaoDoAeroporto.numeroVoo, maxConexoes, infomacao);
                        infomacao = null;
                    }
                } //fim if
            }     //fim do while

            return(selecionaMtd);
        }