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); }