A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Implementação de FILAS com Alocação Dinâmica. Especificação da Interface /* * Interface do Tad Fila */ #include #define MAX 10 // tamanho máximo da Pilha.

Apresentações semelhantes


Apresentação em tema: "Implementação de FILAS com Alocação Dinâmica. Especificação da Interface /* * Interface do Tad Fila */ #include #define MAX 10 // tamanho máximo da Pilha."— Transcrição da apresentação:

1 Implementação de FILAS com Alocação Dinâmica

2 Especificação da Interface /* * Interface do Tad Fila */ #include #define MAX 10 // tamanho máximo da Pilha #define TRUE 1 #define FALSE 0 typedef int Elemento; // tipo a ser armazenado typedef struct nodo { Elemento item; struct nodo *prox; }* Nodo; typedef struct { Nodo inicio,fim; }TadFila; int inicializaFila(TadFila *); int filaVazia(TadFila); int insereNaFila (TadFila *, Elemento); int removeDaFila (TadFila *, Elemento *);

3 Especificação da Interface Foi utilizada uma estrutura chamada nodo contendo um campo item do tipo Elemento e um campo prox; O TAD Fila por sua vez é uma estrutura contendo os campos inicio e fim que são apontadores para struct nodo (Nodo).

4 Declarando uma Pilha Uma variável to tipo TadFila é uma estrutura contendo estes dois campos. Por exemplo, a seqüência: TadFila q; inicio=NULL; fim= NULL; Define a estrutura:

5 Inserindo um elemento

6 Inserindo um Elemento 1.Existem duas situações que devem ser tratadas diferentemente: Quando a Fila está vazia e quando não está vazia. A seguinte seqüência de passos deve ser utilizada: 2.aloca o novonodo 3.atribui os valores ao novo nodo 4.Se a fila está vazia 1.inicio = novonodo 2.fim = novonodo 5.Senão 1.o prox do nodo apontado por fim recebe o novonodo 2.fim=novonodo

7 Função de inserção int insereNaFila(TadFila *q, Elemento elem) { Nodo novonodo; novonodo = (Nodo) malloc (sizeof (struct nodo)); novonodo->item=elem; novonodo->prox=NULL; if (filaVazia(*q)== TRUE){ q->fim=novonodo; q->inicio=novonodo; } else{ q->fim->prox = novonodo; q->fim=novonodo; } return (TRUE); }

8 Remoção A remoção deve guardar o valor que está no fim da Fila, atualizar o ponteiro de Fim e liberar o nodo que estava no fim. Os seguintes passos devem ser seguidos: Se a Fila não está vazia –Guarda o valor contido no nodo a ser eliminado (que está no inicio da Fila) –Guarda o endereço do nodo a ser eliminado (inicio) em uma variável auxiliar (aux) –Inicio recebe o próximo de inicio –Libera a área apontada por aux

9 Operação removeDaFila int removeDaFila(TadFila *q, Elemento *elem){ Nodo aux; if (filaVazia(*q) == FALSE) { *elem = q->inicio->item; aux = q->inicio; q->inicio = q->inicio->prox; free(aux); return (TRUE); } return (FALSE); }


Carregar ppt "Implementação de FILAS com Alocação Dinâmica. Especificação da Interface /* * Interface do Tad Fila */ #include #define MAX 10 // tamanho máximo da Pilha."

Apresentações semelhantes


Anúncios Google