

Next:Comparação
das três soluçõesUp:ep3Previous:Parte
1 - Primeira
Parte 2 - Segunda estratégia: função resolve usando
PILHA
Esta segunda estratégia é muito parecida com a anterior com
a única diferença que usaremos agora uma estrutura de dados
do tipo PILHA ao invés de uma FILA.
Como vimos em sala de aula, uma lista ligada pode representar uma PILHA,
criando-se um ponteiro para o início da lista, chamado topo, e fazendo
a inserção e remoção de células somente
no topo da PILHA.
Como na estratégia anterior, uma estrutura de dados do tipo PILHA
nos permitirá guardar as posições dos diversos caminhos
do labirinto. Esta estratégia de busca também é conhecida
por Busca em Profundidade e apesar de ter a propriedade de ser mais
eficiente em termos de utilização de memória, não
garante encontrar uma solução de caminho mais curto como
na estratégia anterior.
Essa estratégia começa inserindo na PILHA uma única
célula com a posição inicial do rato e endereços
nulos para os ponteiros próximo e
pai. A busca pela
posição do queijo é feita repetindo-se as seguintes
instruções:
-
selecione o primeiro elemento da pilha, ou seja, o elemento apontado por
topo_pilha
-
se topo_pilha == NULL então devolva NULL
-
se topo_pilha é a posição do queijo
então devolva topo_pilha
-
senão remova o topo da pilha inserindo-o no início
da lista LIXO (inicio_lixo)
-
insira na pilha todas as células sucessoras de inicio_lixo
atribuindo ao campo pai o endereço de inicio_lixo
Devemos novamente marcar durante a busca as posições já
visitadas com o caractere 'o' na matriz do labirinto, para evitar
que sejam inseridas células já visitadas na PILHA. Não
esqueça da inicialização e liberação
da memória usada.
Assim que o algoritmo encontrar a posição do queijo você
deve limpar as marcas do labirinto feitas durante a busca e, em seguida,
marcar novamente as posições do caminho solução
encontrado.
Subsections


Next:Comparação
das três soluçõesUp:ep3-enunciadoPrevious:Parte
1 - Primeira
Leliane Nunes de Barros 2002-10-31