Sistemas
Horizonte
Atps Estrutura de Dados
Professora. Juliana Santiago Teixeira
ATIVIDADES PRÁTICAS SUPERVISIONADAS
Analise e desenvolvimento de Sistema
3ª Série Estrutura de Dados
Alunos:
Definam as funções necessárias para a implementação dos quatro primeiros comandos definidos no desafio e o “sair”, utilizando as estruturas de dados com alocação estática de memória definida na Etapa 1.
Função Move A acima B
void MoveAacimaB(TBloco* bloco , int a , int b)
{
Apontador pA, pB, pAntA , pAntB; int listaA ; int listaB ; if(a != b) //Compara se os blocos são diferentes { //Procura os blocos pA = ProcuraBloco(bloco, &pAntA, &listaA, a); pB = ProcuraBloco(bloco ,&pAntB, &listaB, b); if(listaA != listaB) //Compara se os blocos já não estão na mesma lista { if(pA != NULL && pB != NULL && pB->pProx != pA) //Compara se há algum bloco em cima da mesa { if(pA->pProx != NULL) //Compara se há algum bloco em cima do que vai ser movimentado { Original(bloco, pA->pProx); //Retorna o bloco a posição original pA->pProx = NULL; //Faz o ultimo apontar para NULL } if(pB->pProx != NULL) //Compara se há algum bloco em cima do que vai ser movimentado { Original(bloco, pB->pProx); //Retorna o bloco a posição original pB->pProx = NULL; //Faz o ultimo apontar para NULL } pB->pProx = pA; //Coloca o bloco A em cima do bloco B (pAntA)->pProx = NULL; //Faz a mesa na posição correpondente ao bloco A apontar para NULL