Sei sulla pagina 1di 11

Tipos abstratos de dados Listas

Prof. Tiago Massoni Prof. Fernando Buarque Prof. Byron Leite Engenharia da Computao Poli - UPE

Noo de tipos abstratos de dados (TAD)


TAD = Valores + Operaes sobre estes valores TADs implicam em conceitos matemticos (i.e. algebras) que so independentes das suas implementaes

Noo de tipos abstratos de dados (TAD)


A implementao do algoritmo em uma linguagem de programao especfica exige a representao do TAD em termos dos tipos de dados e dos operadores suportados
A representao do modelo matemtico por trs do TAD realizada mediante uma estrutura de dados
3

TADs
Exemplo: o conjunto dos inteiros (objetos) acompanhado das operaes de adio, subtrao e multiplicao Em Java
Classes: oferecem operaes sobre um tipo Encapsulamento: no sabemos como sero implementados
4

Listas
Listas so conjuntos de dados (i.e. estruturas de dados) nos quais existe um encadeamento sequencial dos elementos. Novos elementos podem ser inseridos ou elementos pr-existentes podem ser removidos a depender da ordem especificada para o conjunto
5

O TAD Lista
A0,A1,A2, ..., A(n-1) lista geral
N: tamanho da lista (n=0, lista vazia)

Ai+1 sucede Ai, que sucede Ai-1


Posio = i

Operaes
imprimeLista esvaziar inserir, remover procurarIEsimo
6

Lista - intuio
Lista linear - List (l)
Incio da lista

A
Info Next

B
Info Next

C
Info Next

D
Info

Null

Next

Ns da lista
7

Listas
N node p
Informao contedo til armazenado p.info Next refer. para o n seguinte p.next

Observao: a referncia nula (null) indica o final da lista

Lista vazia
list = null

Se p.next != null ento p.next.info a poro informao do n posterior ao n apontado por p


8

Listas com arrays


public class ListaArrays { private Object[] array; private int count=0; public ListaArrays(){ this.array = new Object[MAX]; } ... public void printList(){..} public Object find(Object x){..} public Object findKth(int pos){..} public void insert(Object x){..} public void remove(Object x){..} }
9

Listas com arrays


findKth tempo constante printList e find sempre o mesmo tempo para o mesmo nmero de ns No entanto, inserir e remover so extremamente custosos (no caso da lista ordenada) Outras desvantagens
Tamanho no pode ser alterado durante execuo quantidade fixa de elementos Ex.: impossvel incluir um elemento a mais que MAX (subutilizao) Estrutura com menos elementos que MAX ocupam toda a memria pr-alocada
10

Exerccio
1. Implemente a classe BIGNUM para nmeros inteiros, contendo as operaes abaixo.
public class BIGNUM { private String digits; private bool signal; public BIGNUM(String n){ // } ... public void soma(BIGNUM o){..} public void subtrai(BIGNUM o){..} public void multiplica(BIGNUM o){..} public BIGNUM divide(BIGNUM o){..} public void potencia(int p){..} public String toString() {...} public int compareTo(Object o) {...} }

4/9

11

Potrebbero piacerti anche