nextupprevious
Next:ObservaçõesUp:ep3Previous:Comparação das três soluções

Protótipos das funções que deverão ser implementadas na Parte1 e Parte 2

A seguir, definimos os protótipos das funções resolve_fila, resolve_pilha e de funções para manipulação da FILA, PILHA e da lista LIXO. Você ainda poderá escrever outras funções que considerar necessárias para resolver o problema.

Os protótipo abaixo supõem que as listas (PILHA, FILA ou LIXO) são criadas dentro das funções resolve_fila e resolve_pilha.

/* A função resolve_fila resolve o labirinto usando uma FILA  
 * Pré: recebe a matriz do labirinto e a posição (x,y) do rato 
 * Pós: devolve NULL se não existir solução, caso contrário 
 *      devolve o endereço de uma célula em LIXO que contém a 
 *      posição do queijo.  
 */    
struct posicao *resolve_fila(char **lab, int x, int y);


/* A função resolve_pilha resolve o labirinto usando uma PILHA 
 * Pré: recebe a matriz do labirinto e a posição (x,y) do rato 
 * Pós: devolve NULL se não existir solução, caso contrário 
 *      devolve o endereço de uma célula em LIXO que contém a 
 *      posição do queijo. 
 */ 
struct posicao *resolve_pilha(char **lab, int x, int y);


/* A função insere_fila insere uma celula posição,
 * atualizando o início da fila no caso de fila vazia 
 * Pré: recebe uma posição (x,y), o endereço do fim e do início da fila
 * Pós: devolve o fim da fila após a inserção da célula contendo (x,y) e o pai
 * sendo o endereço do início da fila
 */ 
struct posicao *insere_fila(int x, int y, struct posicao **inicio, struct posicao *fim);


/* A função insere_pilha insere uma celula posição,
 * no topo da pilha
 * Pré: recebe uma posição (x,y), o endereço da célula pai e do topo da pilha
 * Pós: devolve o topo da pilha após a inserção da célula contendo (x,y)
 */ 
struct posicao *insere_pilha(int x, int y, struct posicao *pai, struct posicao *topo);


/* A função remove_fila remove um elemento do início da fila  
 * e o insere no início da lista LIXO 
 * Pré: recebe o endereço do inicio da fila e um ponteiro para o inicio do lixo
 * Pós: devolve o inicio da fila
 */ 
struct posicao *remove_fila(struct posicao *inicio_fila, struct posicao **inicio_lixo);


/* A função remove_pilha remove um elemento do topo da pilha e o 
 * insere no início da lista LIXO 
 * Pré: recebe o endereço do topo da pilha e um ponteiro inicio_lixo
 * Pós: devolve o topo da pilha após a remoção de uma célula  
 */ 
struct posicao *remove_pilha(struct posicao *topo, struct posicao **inicio_lixo);


/* A função libera_lista serve para liberar a memória alocada para 
 * uma lista encadeada que pode ser a PILHA, FILA ou o LIXO. 
 * Pré: início da lista
 */
void libera_lista(struct posicao *ini);



Leliane Nunes de Barros 2002-10-31