{[ promptMessage ]}

Bookmark it

{[ promptMessage ]}

Cap 5 - Pilhas Filas e Deques-4spp

Cap 5 - Pilhas Filas e Deques-4spp - Estruturas de Dados...

Info icon This preview shows pages 1–4. Sign up to view the full content.

View Full Document Right Arrow Icon
Estruturas de Dados Elementares Pilhas, Filas e Deques Estruturas de Dados M.T. Goodrich, R. Tamassia. Estruturas de Dados e Algoritmos em Java. 4a Edição. Ed. Bookman ! Cap. 3 2 Estruturas de Dados 3 Introdução Estruturas Elementares de Dados: ! Pilhas ( Stacks ), ! Filas ( Queues ), ! Deques ( Double-ended queues ). Estruturas Lineares: implementam alguma ordem linear entre seus elementos (existe a noção de ordem: primeiro elemento, último elemento, próximo elemento, anterior, sucessor). Pilhas
Image of page 1

Info icon This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Estruturas de Dados 5 O TAD PILHA Um TAD Pilha armazena objetos de um mesmo tipo (apesar de que pilhas reais podem armazenar objetos distintos). Inserções e Remoções seguem o esquema “ last- in first-out” (o último a entrar é o primeiro a sair) Operações principais: ! push (objeto o ): insere um elemento o no topo da pilha. ! pop (): remove e retorna o elemento que está no topo da pilha. Erro se pilha vazia. Operações auxiliares: ! objeto top (): retorna (uma cópia do) último elemento inserido, se houver, sem retirá-lo da pilha. Erro se pilha vazia. ! inteiro size (): retorna o número de elementos armazenados na pilha. ! booleano isEmpty (): indica se a pilha está vazia (verdadeiro) ou não (falso). Estruturas de Dados 6 Aplicações de Pilhas Aplicações diretas: ! Histórico de páginas visitadas em um navegador na Web . ! Controle de Desfazer/Refazer ações em um editor de textos. ! Encadeamento de chamadas a métodos ou funções em ambientes de execução como em C++ ou na Java Virtual Machine . Aplicações indiretas: ! Estrutura auxiliar para algoritmos (e.g. ordenação). ! Componente de outras estruturas de dados. Estruturas de Dados 7 Pilha da JVM A Java Virtual Machine (JVM) mantém controle da cadeia dos métodos ativos através de uma pilha. Quando um método é chamado, a JVM insere na pilha um registro com: ! Variáveis locais e valor de retorno. ! Contador de programa que mantém uma memória das declarações sendo executadas. Quando um método encerra execução, seu registro é removido da pilha e o controle é passado ao método no topo da pilha. main () { int i = 5; foo(i); } foo (int j) { int i; i = j+1; bar(i); } bar (int m) { } bar PC = 21 m = 6 foo PC = 13 j = 5 i = 6 main PC = 2 i = 5 Estruturas de Dados 8 Implementação Baseada em Vetores Uma forma simples de implementar o TAD Pilha é usar vetores. Adicionamos elementos da esquerda para a direita. Uma variável t guarda informação sobre a posição do elemento que está no topo (o tamanho é t+1). S 0 1 2 t Algoritmo pop (): se isEmpty () então ERRO_Pilha_Vazia senão t ! t - 1 retorne S [ t + 1] Algoritmo push ( o ) se t = TAM_MAX - 1 então ERRO_Pilha_Cheia senão t ! t + 1 S [ t ] ! o
Image of page 2
Estruturas de Dados 9 A Interface Pilha ( Stack ) Uma interface em Java define quais operações serão implementadas, mas não como elas serão implementadas. A interface Stack a seguir equivale ao TAD Pilha.
Image of page 3

Info icon This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Image of page 4
This is the end of the preview. Sign up to access the rest of the document.

{[ snackBarMessage ]}

What students are saying

  • Left Quote Icon

    As a current student on this bumpy collegiate pathway, I stumbled upon Course Hero, where I can find study resources for nearly all my courses, get online help from tutors 24/7, and even share my old projects, papers, and lecture notes with other students.

    Student Picture

    Kiran Temple University Fox School of Business ‘17, Course Hero Intern

  • Left Quote Icon

    I cannot even describe how much Course Hero helped me this summer. It’s truly become something I can always rely on and help me. In the end, I was not only able to survive summer classes, but I was able to thrive thanks to Course Hero.

    Student Picture

    Dana University of Pennsylvania ‘17, Course Hero Intern

  • Left Quote Icon

    The ability to access any university’s resources through Course Hero proved invaluable in my case. I was behind on Tulane coursework and actually used UCLA’s materials to help me move forward and get everything together on time.

    Student Picture

    Jill Tulane University ‘16, Course Hero Intern