Aula 5 – Tipos Abstratos de Dados

57 

Full text

(1)

Aula 5

Tipos Abstratos de

Dados

Cleyton Caetano de Souza

IFPB – Campus Monteiro

(2)

Roteiro

• Introdução

• Listas

• Pilhas

• Filas

(3)

Introdução

• O que é um Tipo Abstrato de Dados?

– O que é um Tipo de Dado?

– O que é um Tipo Abstrato de Dados?

(4)

O que é um Tipo de Dado?

• Em programação, o tipo de dado define o conjunto de valores que uma variável pode assumir e o conjunto de operações que

podem ser efetuadas com essa variável.

• Os tipos de dados estão fortemente associados ao hardware.

– Quantos bytes devem ser reservados para uma variável?

(5)

O que é um Tipo Abstrato de Dados?

• Em programação, o Tipo Abstrato de Dado

(TAD) é uma especificação de um conjunto de

dados e operações que podem ser executadas

sobre esses dados

(6)

O que é uma Estrutura de Dados?

• Uma estrutura de dados é um modo particular de armazenamento e organização de dados

em um computador de modo que possam ser usados eficientemente.

• Cada estrutura de dados define um conjunto de operações para manipular os dados

– Essas operações estão diretamente associadas a como os dados estão conceitualmente

(7)

Estrutura de Dados

• Estrutura que vamos estudar!

– LISTAS

– PILHAS

– FILAS

– DEQUES (?)

(8)

Listas

• É uma estrutura de dados em que os objetos estão arranjados de forma linear

(9)

Listas

• Listas no Mundo Real

– Lista de Tarefas

– Lista Telefônica

– Lista de Arquivos

– Lista de Alunos

– Lista de Compras

– Lista de Livros da Biblioteca

(10)

Lista

• Operações

– Inserir (no início, em uma posição específica, do final, no lugar de um outro elemento)

– Remover (do início, do fim, de uma posição específica, um elemento específico)

– Pesquisar (por um número específico, pelo

sucessor ou antecessor de um elemento, pelo início, pelo fim)

– Tamanho

(11)

Variações de Implementação

• Sequencial x Dinâmica

– Sequencial utilizando um Array

– Dinâmica utilizando um TAD chamado Nó

• Iterativa x Recursiva

– Iterativa: métodos da lista são implementados usando funções comuns

– Recursiva: métodos da lista são implementados de maneira recursiva

• Ordenada x Desordenada

– Ordenada: os elementos da lista encontram-se ordenados

(12)

Lista: Implementação Sequencial

• Vantagens

– Acesso direto a qualquer elemento da lista em tempo constante

• Desvantagem

– Rearranjo da lista por causa de remoções e inserções – Tamanho pré-estabelecido

• Quando usar

– Listas pequenas

(13)

Lista: Implementação Encadeada

• Os elementos da lista são registros com um

dos componentes destinado a guardar o endereço do registro sucessor e o outro destinado a guardar a informação em si.

(14)

Lista: Implementação Encadeada

• Para guardar o endereço do registro sucessor, é necessário trabalhar com ponteiros

(15)

Lista: Implementação Encadeada

• Para guardar o endereço do registro sucessor, é necessário trabalhar com ponteiros

– O que é um ponteiro?

(16)

Lista: Implementação Encadeada

• Ao programar estruturas de dados em uma linguagem como Java, tem-se uma facilidade, pois ela abstrai a noção de ponteiros, por

meio do uso das variáveis de referência

(17)

Lista: Implementação Encadeada

• Qual vai ser o estado das listas abaixo, após a execução de cada uma das linhas de código a seguir:

– P = Q;

– P.PROX = Q.PROX;

– Q = P.PROX.PROX;

(18)

Lista: Implementação Encadeada

• Considerando as listas abaixo, que sequência eu devo usar para acessar os elementos

listados de um a 6.

1 2 3

(19)

Lista: Implementação Encadeada

• Vantagens

– Permite inserção e remoção em tempo praticamente constante

– Podem crescer indefinidamente

• Desvantagens

– Utiliza memória extra para armazenar os apontadores

– Consultar o enésimo elemento tem custo O 𝑛

• Quando usar

– Casos em que existem muita inserção e remoção de dados

(20)

Técnicas Especiais de Encadeamento

• Lista com Descritor

• Lista Circular

• Lista com Nó Cabeça

(21)

Lista Com Descritor

• Segue a representação de uma lista qualquer

• Se quisermos acessar o último elemento temos que percorrer a lista toda

• Adicionando um nó descritor podemos

(22)

Lista Circular

• Outra técnica de encadeamento é substituir o

ponteiro nulo do último nó da lista pelo endereço do seu primeiro nó.

• Uma vantagem da lista circular pode ser

percorrer toda lista a partir de qualquer nó

• Uma desvantagem é ter que detectar o “fim” da lista de uma forma menos “clara”

(23)

Lista com Nó Cabeça

• Para evitar o teste da Lista Vazia, pode-se

adicionar um nó “vazio” sempre que a lista for

(24)

Lista Duplamente Encadeada

• Em alguns casos, pode-se desejar percorrer a lista em diferentes direções

• Em uma lista duplamente encadeada, cada nó aponta para seu antecessor e para o seu

(25)

Técnicas Especiais de Encadeamento

• Cada técnica tem um objetivo bem definido e aplicá-las possui vantagens e desvantagens.

(26)

Pilhas

• A Pilha pode ser entendida como um tipo de especial de lista em que a inserção e

(27)

Pilha

• Na Pilha, os elementos encontram-se

empilhados e só é possível “enxergar” o

(28)

Pilha

• O topo da pilha corresponde ao último elemento inserido.

(29)

Pilha

• Como a inserção e remoção acontecem no topo da Pilha, ela é conhecida como uma

estrutura do tipo LIFO – Last In First Out, que

(30)

Pilha

• Operações (na pilha, as operações de inserção e remoção tem nomes especiais)

– Push – insere um elemento no topo da pilha – Pop – remove o elemento do topo da pilha

– Consultar topo – informa o elemento do topo da pilha, mas não o remove

– Vazia – testa se pilha está vazia – Cheia – testa se a pilha está cheia

(31)

Pilha

• Implementação

– A pilha também pode ser implementada de forma

encadeada (usando nós) ou de forma sequencial

(32)

Pilha

• Exercício: Crie uma pilha utilizando as seguintes operações.

pilha.push(1) pilha.push(4) pilha.push(0) pilha.push(6) pilha.pop()

pilha.push(pilha.topo()) pilha.push(3)

(33)

Filas

• A Fila também pode ser entendida como um tipo de especial de lista em que a inserção

ocorre em uma extremidade (chamada de fim da fila) e as remoções ocorrem na outra

(34)

Fila

• Na Fila, os elementos encontram-se enfileirados, i.e., um após o outro

(35)

Fila

• Os elementos encontram-se organizados pela ordem em que foram inseridos.

(36)

Fila

• Os primeiros elementos a entrar na Fila são sempre os primeiros a saírem

– Por esse motivo, a Fila é chamada de Estrutura do

tipo FIFO – First In First Out (primeiro a entrar é o

(37)

Fila

• Operações

– Enfileirar – insere elementos na fila – Desenfileirar – retira elementos da fila

– Tamanho da Fila – retorna o tamanho da fila

– Posição do Elemento na Fila – retorna a ordem do elemento na fila

– Vazia – testa se pilha está vazia – Cheia – testa se a pilha está cheia

(38)

Fila

• Implementação

– A fila também pode ser implementada de forma

encadeada (usando nós) ou de forma sequencial

(39)

Fila

• Exercício: Crie uma fila utilizando as seguintes operações.

fila.enfileirar(1) fila.enfileirar(4) fila.enfileirar(0) fila.enfileirar(6) fila.desenfileirar()

fila.enfileirar(fila.desenfileirar()) fila.enfileirar(3)

pilha.desenfileirar() fila.enfileirar(2)

(40)

Exercícios

Lista, Pilhas e Filas 1

• [Prova: CONSULPLAN - 2012 - TSE - Técnico

Judiciário - Programação de Sistemas] As siglas e significados LIFO Last In, First Out e FIFO

First In, First Out referem-se, respectivamente,

às seguintes estruturas de dados

– a) Fila e Pilha.

(41)

Exercícios

Lista, Pilhas e Filas 2

• [Prova: FCC - 2012 - MPE-AP - Técnico Ministerial - Informática] Nas estruturas de dados,

– a) devido às características das operações da fila, o primeiro elemento a ser inserido será o último a ser retirado. Estruturas desse tipo são conhecidas como LIFO.

– b) as pilhas são utilizadas para controlar o acesso de arquivos que concorrem a uma única impressora.

– c) a fila é uma lista linear na qual as operações de inserção e retirada ocorrem apenas no início da lista.

– d) a pilha é uma lista linear na qual as operações de inserção e retirada são efetuadas apenas no seu topo.

(42)

Exercícios

Lista, Pilhas e Filas 3

• [CESGRANRIO (2012) - Petrobrás - Analista de Sistemas Júnior - Engenharia de Software - 2012 ] As classes Java a seguir representam, respectivamente, uma fila e seus nós.

public class Fila {

No ini=null; // referência para o primeiro elemento da fila No fin=null; // referência para o último elemento da fila public No insere(No n) {

} }

public class No { No prox;

int info;

public No(int i) { info=i;

} }

Qual implementação do método insere() permite inserir corretamente um novo elemento na fila, preservando a sua

semântica?

a) public No insere(No n) { fin=n; fin.prox=n; if(ini==null) ini=fin; return n; }

b) public No insere(No n) { No ant=null,cur=ini; for(;cur!=null;cur=cur.prox) ant=cur; n.prox=ini; ini=n; if(fin==null) fin=ini; return n; }

c) public No insere(No n) { No ant=null,cur=ini; for(;cur!=null;cur=cur.prox) ant=cur; fin=n; if(ini==null) ini=fin; else ant.prox=n; return n; }

d) public No insere(No n) { No ant=null,cur=ini; for(;cur!=null&&n.info>cur.info;cur=cur.prox) ant=cur; if(ant==null) { n.prox=ini; ini=n; } else { n.prox=ant.prox; ant.prox=n; } if(n.prox==null) fin=n; return n; }

(43)

Exercícios

Lista, Pilhas e Filas 4

• [Prova: UFF - 2009 - UFF - Técnico de Laboratório - Informática] Na estrutura de dados tipo pilha, há duas operações básicas para empilhamento e desempilhamento. Essas operações são

conhecidas como:

(44)

Exercícios

Lista, Pilhas e Filas 5

• [Prova: FCC - 2011 - TRT - 19ª Região (AL) -

Analista Judiciário - Tecnologia da Informação] FIFO refere-se a estruturas de dados do tipo

– a) fila.

– b) árvore binária.

– c) pilha.

– d) matriz quadrada.

(45)

Exercícios

Lista, Pilhas e Filas 6

• [Prova: FCC - 2012 - TRE-CE - Técnico Judiciário - Programação de Sistemas] Sobre pilhas é correto afirmar:

– a) Uma lista LIFO (Last-In/First-Out) é uma estrutura estática, ou seja,

é uma coleção que não pode aumentar e diminuir durante sua existência.

– b) Os elementos na pilha são sempre removidos na mesma ordem em que foram inseridos.

– c) Uma pilha suporta apenas duas operações básicas, tradicionalmente denominadas push (insere um novo elemento no topo da pilha) e pop (remove um elemento do topo da pilha).

– d) Cada vez que um novo elemento deve ser inserido na pilha, ele é colocado no seu topo e, em qualquer momento, apenas aquele

posicionado no topo da pilha pode ser removido.

– e) Sendo P uma pilha e x um elemento qualquer, a operação Push(P,x)

(46)

Exercícios

Lista, Pilhas e Filas 7

• [AOCP - 2012 - BRDE - Analista de Sistemas - Desenvolvimento de Sistemas - (Prova TIPO 4)] Em estruturas de dados e algoritmos, encontramos uma estrutura

chamada Pilha. A esse respeito, analise as assertivas e assinale a alternativa que aponta as corretas.

I. Uma Pilha é um contêiner de objetos que são inseridos e retirados de acordo com o princípio de que o último que entra é o primeiro que sai (LIFO).

II. Exemplo de implementação de uma pilha pode ser os navegadores para a

Internet que armazenam os endereços mais recentemente visitados em uma pilha. III. Pilhas são estruturas de dados muito complexas, porém não estão entre as mais importantes.

IV. É impossível inserir objetos em uma pilha a qualquer momento, mas somente o objeto recentemente inserido poderá ser removido a qualquer momento.

– a) Apenas I e II.

– b) Apenas I e III.

– c) Apenas II e III.

– d) Apenas II, III e IV.

(47)

Exercícios

Lista, Pilhas e Filas 8

• [Prova: CESPE - 2010 - INMETRO - Pesquisador - Ciência da

Computação] Considere que, no trecho do programa acima,

representado por seu pseudocódigo, seja fornecido para num,

sucessivamente, os valores inteiros 1, 2, 3, 4, 5, 3 e 6. Nesse caso, ao final da execução do programa, o valor de

x será igual a

– a) 2 e a pilha terá os valores 6, 4 e 1. – b) 3 e a pilha terá os valores 6, 4 e 1. – c) 5 e a pilha terá os valores 6, 4 e 1. – d) 3 e a pilha terá os valores 6, 5, 4, 2 e

1.

(48)

Exercícios

Lista, Pilhas e Filas 9

• [Prova: CESGRANRIO - 2006 - DECEA - Técnico de Defesa Aérea e Controle de Tráfego Aéreo - Especialidade - Análise de Sistemas] Assinale a opção que contém o código correto correspondente à linha 14.

– a) head[++pointer] = i;

– b) head[i] = pointer++;

– c) head[pointer]=i;

– d) head.indexOf[i] = pointer;

(49)

Exercícios

Lista, Pilhas e Filas 10

[FGV - 2009 - MEC - Analista de Sistemas - Especialista] A figura abaixo mostra uma aplicação da estrutura de dados pilha denominada MEC, inicialmente

vazia, suportando três operações básicas, conforme definidas no Quadro I. Observe

que o Quadro II apresenta uma

seqüência de operações sobre a estrutura.

Ao final das operações, o elemento que se encontra no topo da pilha é:

• a) organizacional

• b) operacional

• c) estrategico

• d) gerencial

(50)

Exercícios

Listas, Pilhas e Filas 11

[CESGRANRIO - 2006 - EPE - Técnico de Nível Superior - Área Tecnologia da Informação] A tabela ao lado mostra as operações para a manipulação de uma pilha.

Utilizando as definições acima, a seqüência de instruções a seguir foi implementada para avaliar o resultado de uma expressão, sendo A, B, C, D e E os operandos desta expressão. O resultado da avaliação é acumulado em F.

PUSH A PUSH B SUB PUSH C PUSH D PUSH E MPY ADD DEC DIV POP F

Com base no que foi exposto acima, se A, B, C, D e E

apresentarem, respectivamente, os valores 9, 3, 2, 1 e 1, qual o valor armazenado em F após a execução da instrução POP F?

(51)

Exercícios

Listas, Pilhas e Filas 12

• [Ano: 2013 Banca: VUNESP Órgão: CETESB Prova: Analista de Tecnologia da Informação - Analista de Sistemas] Em uma estrutura de dados do tipo fila, a política de acesso aos dados é do tipo

A) First In, Never Out.

B) First In, First Out.

C) First In, Last Out.

D) Last In, Never Out.

(52)

Exercícios

Listas, Pilhas e Filas 13

• [Ano: 2013 Banca: FCC Órgão: MPE-MA Prova: Técnico do Judiciário - Tecnologia da Informação] Ana precisa utilizar uma estrutura de dados para gerenciar trabalhos de impressão em uma impressora compartilhada por vários computadores em uma rede. As regras dessa estrutura devem permitir que os trabalhos sejam impressos na ordem em que forem

enviados, ou seja, o primeiro a enviar um pedido de impressão deve ser o primeiro a ter sua solicitação atendida. Não deve ser permitido inserir pedidos de impressão no meio dos pedidos já realizados.

A estrutura de dados mais adequada para Ana utilizar é

A) pilha.

B) lista encadeada ordenada.

C) árvore binária.

D) tabela hash.

(53)

Exercícios

Listas, Pilhas e Filas 14

• [Ano: 2012 Banca: CESGRANRIO Órgão: LIQUIGÁS Prova:

Profissional de Tecnologia da

Informação - Desenvolvimento de Aplicações] Considere o seguinte trecho de código em linguagem Java.

• Esse trecho implementa uma classe que corresponde a uma

A) fila de inteiros

B) pilha de inteiros

C) árvore binária com valores

inteiros nos nós

D) lista encadeada de inteiros

E) grafo com custos inteiros nas

(54)

Exercícios

Listas, Pilhas e Filas 15

• Editores de texto fornecem um mecanismo de

reversão de operações (“undo”) que cancela

operações recentes e reverte um documento ao estado anterior à operação. Esse mecanismo de

“desfazer” é implementado mantendo as al-

terações do texto em uma estrutura de dados do tipo

A) pilha.

B) fila.

C) heap.

(55)

Exercícios

Listas, Pilhas e Filas 16

• Observe as figuras I e II, que representam duas estruturas de dados.

• Essas estruturas de dados são denominadas, respectivamente:

A) fila e lista.

B) fila e pilha.

C) fila e vetor.

D) vetor e lista.

(56)

Exercícios

Listas, Pilhas e Filas 17

• [Ano: 2014 Banca: CESGRANRIO Órgão: BANCO DA AMAZÔNIA Prova: Técnico Científico - Análise de Sistemas] Considere uma estrutura de fila (disciplina FIFO) de números inteiros com duas operações: INSERE (n) e RETIRA ( ). Considere, também, que a representação do estado da fila em um instante qualquer é

realizada listando os elementos, de forma que o primeiro elemento, da esquerda para a direita, é o mais antigo presente na fila. As

operações abaixo levarão a uma fila no estado

A) 1 2 3 4 5

B) 2 3 1 4 5

C) 3 1 4

D) 4 5

(57)

Exercícios

Listas, Pilhas e Filas 18

[Ministério Público do Rio Grande do Sul -

Figure

Updating...

References

Updating...

Download now (57 página)