TAD - Pilha - Programação c
1.1 Fila – Composta com as variáveis do tipo int com nome ini, fim e tam, que serão usadas para definir o inicio, fim e tamanho da fila. Possui um vetor de tipo Horse, onde as posições e movimentos do cavalo serão gravados.
1.2 Horse – Composta com as variáveis x e y do tipo int, que serão usadas para guardar as posições do tabuleiro. A variável mov de tipo int será a variável que guardará o numero de movimentos do cavalo.
2. A Fila
2.1. A fila irá guardar todos os movimentos possíveis do cavalo. Devido a isto,trinta e cinco posições é o numero em que não irá exceder o limite, mas também não é um desperdício de memória. 3. Procedimentos
3.1. O tabuleiro todo é preenchido com -1.
3.2. É solicitado ao usuário a posição inicial do cavalo no tabuleiro, que serão armazenadas em aux1.x e aux1.y, e a posição em que o cavalo deve atingir, que são armazenadas em x_fim e y_fim. 3.3. A posição inicial é colocada na fila, a casa inicial recebe o valor de movimentos que é zero.
3.4. O laço é infinito e só acaba quando aux2.mov é igual a posição do tabuleiro em que se deseja atingir. Quando aux2.mov for igual a casa inicial significa que esta casa já foi preenchida com o numero de movimentos nescessarios a chegar a ela.
3.5 A fila é liberada e o numero de movimentos necessários é mostrado através do valor de aux2.mov. 4. O Laço
4.1. O Laço possui oito verificações para ‘enfileirar’ as coordenadas, cada uma verifica se a posição já foi escrita e se o movimento é valido.
4.2 Após enfileirar todos os movimentos possíveis, aux1 recebe o primeiro da fila, faz a verificação se está na posição desejada, caso não, o movimento é incrementado e enfileira todos os movimentos possíveis a partir desta posição com o valor de movimento incrementado. 5.Exemplo
5.1 Uma das possibilidades visuais, caso aux1 seja 4x5 e x_fim e y_ fim sejam 1x1.
0
0
3
2
3
3
4
3
3
5
2
3
2
2
3
--2--
3
3
5
2