inteligÊncia artificial curso: ciências da computação prof:. arimatéia júnior
TRANSCRIPT
INTELIGÊNCIA ARTIFICIAL
Curso: Ciências da Computação
Prof:. Arimatéia Júnior
Sumário
oDefinição de Estrutura de dados;
oTipos de estrutura de dados;
oImplementação de estruturas de dados;
oExercicios;
IntroduçãoProgramas consistem de duas partes:
Algoritmos;
Estrutura de dados.
Um bom Programa , na realidade, é a combinação de ambos
Introdução
A escolha e a implementação de uma boa estrutura de dados são tão importantes quanto as rotinas que manipulas esses dados.
A forma como a informação é organizada e acessada é normalmente determinada pela natureza do programa.
Introdução
A escolha e a implementação de uma boa estrutura de dados são tão importantes quanto as rotinas que manipulas esses dados.
A forma como a informação é organizada e acessada é normalmente determinada pela natureza do programa.
Introdução
As estruturas de dados são utilizadas para realizar o armazenamento e a recuperação de dados que se deseja trabalhar.
Onde é meu
lugar??
Introdução
Existem basicamente 4 tipos de mecanismos responsáveis por essas condições:
1. Fila;
2. Pilha
3. Lista;
4. Árvore binária*.
FILA
Uma fila é simplesmente uma lista linear de informações, que é acessada seguindo o principio:
o primeiro que entra e o primeiro que sai (First In First Out); FIFO
12345
Primeiro a sair
Segundo ocupa o lugar do primeiro
1
FILA - Implementação Interface do tipo genérico da fila:
1. Função fila-cria:
- Aloca dinamicamente a estrutura da fila; - Inicializa seus campos e retorna seu ponteiro.
2. Funcao fila_insere e funcao fila_retira:
- Insere e retira, respectivamente, um valor real na fila.
3. Função fila_vazia: - Informa se a fila está ou não vazia.
4. Função libera_fila: - Destroi a fila, liberando toda a memória usada pela estrutura.
FILA - Implementação -Fila* fila_cria (void); //cria uma fila
- void fila_insere (Fila* p, float v);//enfileira um novo elemento
- float fila_retira (Fila* p);//retira um elemento (primeiro)
- int fila_vazia (Fila* p);//verifica se a fila está vazia
- void fila_libera (Fila* p);//esvazia toda a estrutura alocada para a fila, liberando seus elementos
FILA - Implementação -Fila* fila_cria (void); //cria uma fila
- void fila_insere (Fila* p, float v);//enfileira um novo elemento
- float fila_retira (Fila* p);//retira um elemento (primeiro)
- int fila_vazia (Fila* p);//verifica se a fila está vazia
- void fila_libera (Fila* p);//esvazia toda a estrutura alocada para a fila, liberando seus elementos
FILA - Implementação Typedef struct fila Fila;
Implementacao de fila com vetor:
– Vetor (vet) armazena os elementos da fila.– Estruturas de fila:
#define Num_elementos 100 // numero máximo de elementos
Typedef struct fila {
int N; //número de elementos atualmente na fila int INI; //posição do próximo elemento na fila float Vet [Num_elementos ] ;
} Fila ;
FILA - Implementação Agora que foi criado a estrutura da fila Inicia-se a construção da função responsável por criar a fila dentro do programa.
Fila * fila_cria (void) Fila* fila_cria (void) {
Fila* f = (Fila*) malloc (sizeof(Fila)); //alocando memoria f->n = 0; // inicializa a fila como vazia; f->ini = 0; // escolhe uma posição inicial; return f; }
FILA - ImplementaçãoVisão atual da fila
Número de elementos atualmente na fila = 0
Número de elementos que a fila pode ter = 10
Inicio
Fim
FILA - ImplementaçãoOs dois passos inicias na implementação foram completados.
Passo seguinte, implementar a função responsável por inserir elementos na fila.
Deve-se atentar as fatores de segurança no momento da inserção.
Verificar se ainda existe vagas na fila
FILA - Implementação
void fila_insere (Fila* f, float v) { int fim; if (f-> == N) { printf (“Fila não tem espaço disponível”); exit (1); } fim = (f->ini + f->n)%N; //cálculo do índice do último elemento f->vet[fim] = v; f->n++; }
void fila_insere (Fila* f, float v) { int fim; if ( fn == Num_elementos) { printf(“Fila lotada”); exit(1); }
fim = (fini + fn); f->vet[fim] = v; fn++;}
FILA - Implementação
void fila_insere (Fila* f, float v) { int fim; if (f-> == N) { printf (“Fila não tem espaço disponível”); exit (1); } fim = (f->ini + f->n)%N; //cálculo do índice do último elemento f->vet[fim] = v; f->n++; }
float fila_retira (Fila* f); { float v; if ( fila_vazia(f)) { printf(“Fila vazia”); exit(1); }
v = fvet[fini]; fini = fini+1; fn--;}
FILA - Implementação
int fila_vazia (Fila* f) {
return (f->n == 0);
}
Implementação da função fila_vazia
FILA - Implementação
Void libera_fila (Fila* f) {
free(f);
}
Por fim, temos a função responsável pela liberação da memória alocada;