Вы находитесь на странице: 1из 16

Estruturas Lineares

Estruturas Lineares

Rui Camacho

Estrutura de Dados e Algoritmos

Estruturas Lineares

Abstract Data Type ADT

Tipo Abstracto de Dados

Tipo Abstracto de Dados uma especicao de: e ca um conjunto de dados um conjunto de operaoes sobre esses dados c essa especicao abstracta no sentido em que ca e e independente de qualquer iplementao ca

Rui Camacho

Estrutura de Dados e Algoritmos

Estruturas Lineares

Listas, Pilhas e Filas

Lista: aplicaes e implementao co ca Pilha: aplicaes e implementao co ca Fila: aplicaes e implementao co ca

Rui Camacho

Estrutura de Dados e Algoritmos

Estruturas Lineares

Lista
Sequncia de elementos A1 , A2 , ..., AN e
tamanho N. Se tamanho 0 ento lista vazia a (excepto para AN ) Ai+1 o sucessor de Ai e (excepto para A1 ) Ai1 o antecessor de Ai e i a posio do elemento Ai na lista e ca

Operaoes c
tornar vazia (makeEmpty()) listar (printList()) inserir: a seguir ` posio corrente a ca remover: na posio corrente ca pesquisar: por contedo ou por posio u ca

Implementao ca
em array em Lista Ligada

Rui Camacho

Estrutura de Dados e Algoritmos

Estruturas Lineares

Implementao usando Lista Ligada ca

Estrutura com ns que armazenam elementos o


elementos acedidos por referncias e

Operaes: co

Rui Camacho

Estrutura de Dados e Algoritmos

Estruturas Lineares

Ns - declarao, insero e remoo o ca ca ca

N da lista o
class NoDaLista{ Object elemento; NoDaLista proximo; public NoDaLista(Object elemento, NoDaLista proximo){ this.elemento = elemento; this.proximo = proximo; } }

Inserir a seguir ao n actual o


actual.proximo = new NoDaLista(elemento, actual.proximo);

Apagar a seguir ao n actual o


actual.proximo = actual.proximo.proximo;

Rui Camacho

Estrutura de Dados e Algoritmos

Estruturas Lineares

Operaoes na Lista c

Operaes de acesso a elementos da lista co

requerem referncia a ns da lista e o necessrio garantir que acesso aos ns da lista seguro a o e
Acesso directo aos ns da lista o

no garante encapsulamento de informao a ca utilizador da estrutura pode passar referncia para objecto que e no da lista a e

Rui Camacho

Estrutura de Dados e Algoritmos

Estruturas Lineares

Uso de elemento Cabea de lista c

Inseres e remoes de lista sem n extra ` cabea co co o a c simples para ns intermdios o e caso especial: 1o n, requer processo especial o N extra como cabea de lista o c garante que todos os ns tm um n anterior o e o elimina casos especiais na insero e remoo ca ca

Rui Camacho

Estrutura de Dados e Algoritmos

Estruturas Lineares

Lista Duplamente Ligada

Rui Camacho

Estrutura de Dados e Algoritmos

Estruturas Lineares

Lista Ligada Aplicaes co

Polinmio esparso o radix sort Matrizes esparsas Matriz cursos/alunos

Rui Camacho

Estrutura de Dados e Algoritmos

Estruturas Lineares

Pilha

Estrutura LIFO (last in, rst out)


Acesso restrito ao ultimo elemento inserido

Operaes co
Inserir: push Remover: pop Pesquisar: top

Rui Camacho

Estrutura de Dados e Algoritmos

Estruturas Lineares

Aplicaoes c
Compilao de linguagens de programao ca ca vericao sintctica (gramticas) ca a a

Pilha adequada para guardar contextos, mantendo dispon e vel o corrente


chamada de procedimentos

Chamada: empilha registo de activao ca Sa da: desempilha registo correspondente visibilidade das variveis decorre da sua posio na pilha a ca
avaliao de expresses ca o

Pilha mantm operandos, operadores e resultados intermdios e e


expresses: converso para notao posxa o a ca

Pilha mantm operadores at operandos respectivos estarem e e dispon veis Precedncia e associatividade de operadores determina a e ordem de sa da
Rui Camacho Estrutura de Dados e Algoritmos

Estruturas Lineares

Stack - anlise a

Operaes sobre a pilha devem ser em tempo constante co insero e remoo na pilha s envolvem o topo ca ca o Implementao em array ca em geral: tempo constante duplicao do array: gasta tempo da ordem da dimenso do ca a array (para a cpia) o amortizao: duplicao O(N) mas o custo distribu ca ca e e do pelos acessos aos N elementos adicionais obtidos; resultado e acrscimo constante em cada operao e ca

Rui Camacho

Estrutura de Dados e Algoritmos

Estruturas Lineares

Fila

Estrutura FIFO (rst in, rst out) Insero na cauda e remoo da cabea ca ca c Operaes co Inserir: enqueue Remover: dequeue Pesquisar: getFront

Rui Camacho

Estrutura de Dados e Algoritmos

Estruturas Lineares

Queue - implementao em array ca

Rui Camacho

Estrutura de Dados e Algoritmos

Estruturas Lineares

Queue - implementao em array ca

Rui Camacho

Estrutura de Dados e Algoritmos