Estrutura de Dados Prof. André Cypriano M. Costa

Slides:



Advertisements
Apresentações semelhantes
Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de.
Advertisements

LISTAS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello.
Marco Antonio Montebello Júnior
Marco Antonio Montebello Júnior
Pilhas e Filas CONTEÚDO (1) Pilhas (2) Filas.
Programação Avançada I
Listas encadeadas Prof. Rosana Palazon.
Algoritmos de manipulação de estruturas elementares de dados
Listas duplamente encadeadas
Programação II Estruturas de Dados
Programação II Estruturas de Dados
Estrutura de Dados e Algoritmos e Programação e Computadores II
ESTRUTURAS DO TIPO FILA
Filas David Menotti Estruturas de Dados I DECOM – UFOP.
David Menotti Estruturas de Dados I DECOM – UFOP
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Aula T12 – BCC202 Listas Túlio Toffolo
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
AED – Algoritmos e Estruturas de Dados
FILAS (Queues) Estrutura linear de acesso seqüencial que ordena seus elementos pela seqüência cronológica de sua entrada; Estrutura FIFO (First In First.
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Prof.: Sergio Pacheco Estruturas de Dados I Prof.: Sergio Pacheco 1.
Estrutura de dados Busca
Slides: Prof. João Fabro UTFPR - Curitiba
Lista Encadeada Circular Lista Duplamente Encadeada
Listas Lineares Estrutura de Dados.
Algoritmos e Estruturas de Dados
Denise Guliato Faculdade de Computação – UFU
Denise Guliato Faculdade de Computação – UFU
Denise Guliato Faculdade de Computação – UFU
Aula 11 LISTAS LIGADAS.
INTELIGÊNCIA ARTIFICIAL
Tipos Abstratos de Dados
Filas - Definição Uma fila possui o comportamento: O primeiro que chega é o primeiro que sai. O único elemento que pode ser removido da fila é o primeiro.
TAD Pilha com Alocação Dinâmica de Memória
Implementação de FILAS com Alocação Dinâmica
Lista Encadeada Circular Lista Duplamente Encadeada
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação
Denise Guliato Faculdade de Computação – UFU
Faculdade de Informática e Tecnologia de Pernambuco ESTRUTURA DE DADOS
Listas, Filas e Pilhas Katia Guimarães.
Estruturas de Dados Aula 9: Listas (parte 1)
Pilhas Profa. Nádia Félix.
Estruturas de Dados PROFESSOR DIÓGENES FURLAN. Estruturas de Dados (ED) Programas operam sobre dados Dados são relacionados e possuem estrutura Como representar.
Estruturas de Dados Aula 11: TAD Pilha
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática Disciplina: Estrutura de Dados Professor: Cheli dos S. Mendes da Costa Listas.
Filas. #define MAXFILA 100 typedef struct queue { int item [ MAXFILA]; int inic, fim; } fila; fila q;
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Estruturas de Dados Aula 17: Estruturas Genéricas
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Pilhas e Filas usando Alocação Estática e Dinâmica de Memória
Prof. Alessandro Gonçalves
Professor Ulisses Vasconcelos
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Objetivos Ao concluir esta Disciplina espera-se que os alunos sejam capazes de: Distinguir os conceitos de Estrutura e Dados; Compreender o que são, como.
Profa. Juliana Mafra ESTRUTURA DE DADOS 30 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco.
Universidade Federal do Amazonas Instituto de Ciências Exatas e Tecnologia Prof. Lady Daiana de Oliveira Pinto Acadêmicos: Andrei Rodrigues Luciano Cavalcante.
11 Pilhas, Filas e Listas Duplamente Encadeadas Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
Pilha dinâmica Prof.° Jean Daniel Henri Merlin Andreazza
Estrutura de Dados Prof. André Cypriano M. Costa
Lista Ligada Estrutura de Dados II Prof. Gale. Vantagens  Crescem (ou decrescem) à medida que elementos são inseridos (ou removidos)  seqüência encadeada.
UNIVERSIDADE FEDERAL DE MINAS GERAIS Pilhas e Filas Cristiano Arbex Valle Vinicius Fernandes dos Santos
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
INE5408 Estruturas de Dados Estruturas de Dados básicas utilizando Vetores - Introdução - Pilhas usando Vetores - Filas usando Vetores.
INF1007 – Programação 2 9 – Pilhas
Transcrição da apresentação:

Estrutura de Dados Prof. André Cypriano M. Costa

 A fila é uma outra estrutura de dados muito utilizada em computação.  É uma analogia natural com o conceito de fila que usamos no nosso dia a dia: os elementos saem da fila seguindo a mesma ordem de entrada.

 Fila é uma estrutura de dados do tipo “Primeiro a Entrar, Primeiro a Sair”. First In, First Out (FIFO) ou Last In, Last Out (LILO)  Uma fila é um conjunto de elementos a partir do qual podem-se eliminar elementos numa extremidade (chamada início da fila) e no qual podem-se inserir elementos na outra extremidade (chamada final da fila).  Fila x Pilha

 Fila de Impressão Impressora em rede compartilhada por várias máquinas Que documento será impresso primeiro? A estratégia mais simples é tratar todas as requisições com a mesma prioridade. Imprimir os documentos na ordem em que foram submetidos – o primeiro submetido é o primeiro a ser impresso.  Processos do Sistema Operacional Fila dos processos prontos para execução Fila dos processos aguardando I/O

 novaFila (newQueue) Produz uma fila vazia  filaVazia (emptyQueue) Testa se a fila está vazia  primeiro (first) Retorna o primeiro elemento da fila  inserir (push) Insere um elemento no final da fila  remover (pop) Remove o primeiro elemento da fila

 Sintaxe Dado φ uma fila (queue): novaFila() → φ vazio filaVazia(fila φ) → boolean push(fila φ, tipo λ) → φ pop(fila φ) → φ primeiro(fila φ) → tipo

 Semântica Dado φ uma fila (queue): filaVazia(novaFila()) → filaVazia(push(fila φ, tipo λ)) → pop(push(fila φ, tipo λ) → pop(novaFila()) → primeiro(push(fila φ, tipo λ) → primeiro(novaFila()) → true false φ null λ

#define MAX 10 // definição da estrutura de dados fila typedef struct fila { int tam;// numero de elementos da fila int vet[MAX];// vetor que vai armazenar os elementos } Fila; // declaração de uma variável do tipo Fila Fila fila;

int filaVazia(Fila fila) { // retorna 0 se a condição for Falsa. Caso contrário, // retorna um valor diferente de 0. return (fila.tam == 0); }

Fila push(Fila fila, int elem) { // verifica se a fila está cheia if(fila.tam == MAX) { // capacidade maxima atingida printf(“Fila cheia.\n"); exit(1); // aborta o programa } fila.vet[fila.tam] = elem; // insere o elemento fila.tam++; // atualiza a quantidade de elementos return fila; }

int primeiro(Fila fila) { // verifica se a fila está vazia if(filaVazia(fila)) return -1; // retorna um código de erro // senão o elemento do topo da fila else return fila.vet[0]; }

Fila pop(Fila fila) { int i; if(filaVazia(fila)) // verifica se a fila está vazia { printf(“A fila esta vazia!\n”); return fila; // se sim, retorna a referência da fila vazia } // desloca os elementos da fila para frente for(i = 0; i < fila.tam && i != MAX - 1; i++) fila.vet[i] = fila.vet[i + 1];...

// verifica se o índice do vetor foi até a última posição do vetor if(i == MAX – 1) fila.vet[MAX – 1] = -1; //atribui -1 à última posição // decrementa a quantidade de elementos da fila fila.tam--; return fila; }

 Implemente, em C, o TAD Fila usando vetor. Na sua implementação deve constar um menu que permite ao usuário Inserir um novo elemento na fila Consultar o primeiro elemento da fila Remover um elemento da fila  Fique à vontade para implementar qualquer outra funcionalidade que desejar Por exemplo, uma função que imprime todos os elementos da fila

// definindo a estrutura de dados pilha typedef struct fila { int valor; struct fila *prox; } Fila; // declarando uma pilha Fila *fila;

Fila* novaFila() { return NULL; }  Exemplo: // declarando uma variável do tipo fila e inicializando-a Fila *fila = novaFila();

int filaVazia(Fila* fila) { // retorna verdadeiro se a fila estiver vazia, caso // contrário retorna falso return (fila == NULL); }

Fila* push(Fila* fila, int elem) { // criando um backup para o inicio da fila Fila *temp = fila; // alocando espaço para mais um elemento da fila Fila *novo = (Fila*)malloc(sizeof(Fila)); // preenchendo os campos do novo elemento da fila novo -> valor = elem; novo -> prox = NULL;...

// verifica se a fila está vazia if(filaVazia(fila)) // se estiver o primeiro elemento é o novo elemento return novo; // caso contrário, percorre a fila até o último elemento while(temp -> prox != NULL) temp = temp -> prox; // liga o último elemento ao novo elemento temp -> prox = novo; return fila; }

Fila* primeiro(Fila* fila) { // verifica se a fila está vazia if(filaVazia(fila)) return NULL; // retorna o primeiro da fila else return fila; }

Fila* pop(Fila* fila) { // verifica se a fila está vazia if(filaVazia(fila)) return NULL; // cria uma referência para o segundo elemento da fila Fila *temp = fila -> prox; // remove o primeiro elemento free(fila); // retorna o novo elemento referenciado return temp; }

 Implemente, em C, o TAD Fila usando ponteiros. Na sua implementação deve constar um menu que permite ao usuário Inserir um novo elemento na fila Consultar o primeiro elemento da fila Remover um elemento da fila  Fique à vontade para implementar qualquer outra funcionalidade que desejar Por exemplo, uma função que imprime todos os elementos da fila

// estrutura de um nó da fila typedef struct noFila { int valor; struct noFila *prox; } NoFila; // estrutura que gerencia a // fila typedef struct fila { NoFila* prim; NoFila* ult; } Fila;

Fila* novaFila() { // cria uma estrutura gerenciadora Fila* novaFila = (Fila*)malloc(sizeof(Fila)); // inicializa seus ponteiros novaFila  prim = NULL; novaFila  ult = NULL; return novaFila; }

int filaVazia(Fila* fila) { // retorna verdadeiro se a fila estiver vazia, caso // contrário retorna falso return (fila  prim == NULL); }

Fila* primeiro(Fila* fila) { // verifica se a fila está vazia if(filaVazia(pilha) return NULL; // retorna a referência para o primeiro elemento da fila return fila  prim; }

Fila* push(Fila* fila, int elem) { // alocando espaço para mais um elemento da fila NoFila* novo = (NoFila*)malloc(sizeof(NoFila)); // preenchendo os campos do novo elemento da fila novo  valor = elem; novo  prox = NULL; // verifica se a fila está vazia if(filaVazia(fila)) // insere o primeiro elemento da fila fila  prim = fila  ult = novo;...

else { // inserindo o último elemento da fila fila  ult  prox = novo; fila  ult = novo; } return fila; }

Fila* pop(Fila* fila) { // verifica se a fila está vazia if(filaVazia(fila)) return NULL; // verifica se existe apenas um elemento else if(fila  prim == fila  ult) { // remove o elemento e atualiza as referencias free(fila  prim); fila  prim = fila  ult = NULL; }

// existe mais de um elemento na fila else { // cria uma referência para o segundo elemento da fila NoFila* temp = fila  prim  prox; // remove o primeiro elemento e atualiza as referencias free(fila  prim); fila  prim = temp; } return fila; }

 Implemente a estrutura de dados Fila Melhorada usando a linguagem C. Na sua implementação deve constar um menu que permite ao usuário Inserir um novo elemento na fila Consultar o primeiro elemento da pilha Remover um elemento da fila  Fique à vontade para implementar qualquer outra funcionalidade que desejar Por exemplo, uma função que imprime todos os elementos da fila