Revisão de TDA, Pilhas e Filas Professor: Santiago Viertel dcc2sv@joinville.udesc.br
Sumário Tipos de Dados Abstratos Pilhas Conceito Pilha Estática Filas Conceito Filas Estáticas (FEMR, FEMI e FEC)
Tipos de Dados Abstratos Ideia Central: Esconder do usuário a implementação de um determinado tipo. Pontos Positivos: Desacoplamento de implementação; Facilidade de manutenção do código; Maior potencial de reutilização de código.
Tipos de Dados Abstratos Consiste de: Representação dos Dados: Normalmente é a declaração de estruturas de dados para representar o estado de um objeto. Conjunto de Operações: São subrotinas que manipulam direta e indiretamente os dados.
Tipos de Dados Abstratos Enfoque Prático: Usuário do TDA Interface do TDA Implementação do TDA Lembrar: A manipulação precisa ser atômica (ou é realizada por completo ou volta ao estado anterior); O usuário deve ser informado se a operação ocorreu com sucesso ou não.
Pilhas Conceito: É um conjunto de itens no qual podem ser eliminados e inseridos itens a partir do seu topo. Possui somente uma extremidade: o topo; Só podem ser inseridos itens a partir do topo.
Pilhas Só pode ser removido o item que está no topo; Inserir(J) Inserir(K) Inserir(G) Remover Remover Remover J K J G K J K J J Inserções: J, K e G Remoções: G, K e J Também chamada de lista LIFO (last-in, first-out)
Pilhas Pilha Estática como TDA: Conjunto de Operações: cria, destrói, purga, testa vazia, testa cheia, empilha, desempilha e busca no topo. Representação dos Dados: Representação Gráfica: ppe p int topo int tamvet int taminfo void **vet
Conceito: É um conjunto ordenado de itens no qual podem ser eliminados itens de uma extremidade e podem ser inseridos itens na outra extremidade. Possui duas extreminadades: o início e o final; Novos itens só podem ser inseridos no final;
Os itens só poderão ser removidos do início; Inserir(K) Inserir(Y) Inserir(G) K K Y Remover Remover Remover K Y G Y G G Inserções: K, Y e G Remoções: K, Y e G Também chamada de lista FIFO (fist-in, first-out)
Filas Estáticas (FE): Fila Estática com Movimentação de dados na Remoção (FEMR); Fila Estática com Movimentação de dados na Inserção (FEMI); Fila Estática Circular (FEC).
Fila Estática como TDA: Conjunto de Operações: cria, destrói, purga, testa vazia, testa cheia, insere, remove e busca na frente. Representação dos Dados: FEMR; FEMI; FEC.
Fila Estática como TDA: Representação dos Dados: FEMR (Movimenta todos os itens ao remover): Remover Remover 6 4 5 4 5 5
Fila Estática como TDA: Representação dos Dados (FEMR): pfemr f int final int tamvet int taminfo void **vet
Fila Estática como TDA: Representação dos Dados: FEMI (Movimenta todos os itens ao inserir): É possível ocorrer falso cheio; Movimenta-se os dados antes da inserção (quando ocorrer falso cheio). Inserir (7) Remover Inserir (2) 5 3 5 3 7 3 7 Posição em branco (falso cheio)
Fila Estática como TDA: Representação dos Dados (FEMI): pfemi f int inicio int final int tamvet int taminfo void **vet
Fila Estática como TDA: Representação dos Dados (FEMI): Como detectar se a FEMI está cheia ou vazia? Cheia Y K W K W 8 Vazia inicio final tamvet=3 final-inicio=2 inicio final tamvet=3 final-inicio=1 Está cheia se final-inicio==tamvet-1 inicio final final inicio inicio=1 final=1 Está vazia se final<inicio inicio=2 final=1
Fila Estática como TDA: Representação dos Dados (FEC): Ao ser detectado falso cheio durante a inserção, o fim da fila passa a ser o primeiro elemento do vetor (caso ainda haja espaço na fila); Ao se remover um elemento que se encontra na última posição do vetor, o início passa a ser o primeiro elemento do vetor (caso seja possível a remoção).
Inserir (5) 0 final final 4 0 8 5 8 4 inicio 1 2 3 inicio 1 2 3 final 0 Remover 5 8 4 final 0 5 4 1 2 3 inicio inicio 1 2 3
Fila Estática como TDA: Representação dos Dados (FEC): Detecção de cheia e vazia: Vazia Se tamfila==0 Está vazia Cheia Se tamfila==tamvet Está cheia
Fila Estática como TDA: Representação dos Dados (FEC): pfec f int inicio int final int tamfila int tamvet int taminfo void **vet
Contato Prof. Santiago Viertel Site: www.joinville.udesc.br/portal/professo res/santiago E-mail: dcc2sv@joinville.udesc.br