Prof Ulisses Vasconcelos ESTRUTURA DE DADOS AULA 02 - PILHA Conceito Inserção Remoção.

Slides:



Advertisements
Apresentações semelhantes
Christiano Lima Santos
Advertisements

Aula T10 – BCC202 Listas – Parte 2 Túlio Toffolo www. decom. ufop
Marco Antonio Montebello Júnior
Pilhas e Filas CONTEÚDO (1) Pilhas (2) Filas.
Listas encadeadas Prof. Rosana Palazon.
Algoritmos de manipulação de estruturas elementares de dados
Programação II Estruturas de Dados
Estrutura de Dados e Algoritmos e Programação e Computadores II
Programação Concorrente
ESTRUTURAS DO TIPO FILA
Universidade Federal do Pará Serviço Público Federal Centro de Ciências Exatas e Naturais Departamento de Informática Abril/2001.
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Estruturas de Dados I DECOM – UFOP
Aula T11 – BCC202 Pilhas Túlio Toffolo
Pilha David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP.
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
Prof.: Sergio Pacheco Estruturas de Dados I Prof.: Sergio Pacheco 1.
Listas com Ponteiros Listas encadeadas Listas circulares.
Slides: Prof. João Fabro UTFPR - Curitiba
Robson Godoi / Sandra Siebra
O Portal do Estudante de Computação
Paradigmas de programação
ALGORITMOS E ESTRUTURAS DE DADOS
Ponteiros em Pascal Variáveis ponteiros são aquelas que guardam o endereço de outra, possibilitando o acesso a seu conteúdo. Declaração em Pascal:  var.
Variáveis, Tipos de Dados e Constantes
Algoritmos e Estruturas de Dados
LISTAS DUPLAMENTE ENCADEADAS
Denise Guliato Faculdade de Computação – UFU
Aula 11 LISTAS LIGADAS.
Introdução a Programação COM 100
Listas duplamente encadeadas Estrutura: tDado = integer; { ou real, char, etc.} tPtNo = ^tNo; tNo = record Ant: tPtNo Dado: tDado; Prox: tPtNo; end; var.
Procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P);
Ponteiros em Pascal Variáveis ponteiros são aquelas que guardam o endereço de outra, possibilitando o acesso a seu conteúdo. Declaração em Pascal:  var.
TAD Pilha com Alocação Dinâmica de Memória
Implementação de FILAS com Alocação Dinâmica
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação
Denise Guliato Faculdade de Computação – UFU
Listas, Filas e Pilhas Katia Guimarães.
Aula 3 Listas, pilhas, filas.
Estruturas de Dados Aula 9: Listas (parte 1)
Ambiente de Execução - Rotinas
Pilhas Profa. Nádia Félix.
Capítulo III Modularização Procedimentos e Funções Universidade Federal de São Carlos Departamento de Computação Aluna: Luanna Lopes Lobato
Estruturas de Dados PROFESSOR DIÓGENES FURLAN. Estruturas de Dados (ED) Programas operam sobre dados Dados são relacionados e possuem estrutura Como representar.
Estruturas de Dados Aula 11: TAD Pilha
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática Disciplina: Estrutura de Dados Professor: Cheli dos S. Mendes da Costa Listas.
Filas. #define MAXFILA 100 typedef struct queue { int item [ MAXFILA]; int inic, fim; } fila; fila q;
Aula 04 – 22/03 Listas Duplamente Encadeada – Listas Encadeada Circular – Lista Duplamente Encadeada Circular.
Vetores Bidimensionais – Debug - Ponteiros – Listas Encadeadas Simples
Aula 06 – 05/04 Árvores binárias.
Professor Ulisses Vasconcelos
Estruturas de Dados Aula 10: Listas (parte 2) 07/05/2014.
Estrutura de Dados Aula 02 1.
INE5408 Estruturas de Dados
Objetivos Ao concluir esta Disciplina espera-se que os alunos sejam capazes de: Distinguir os conceitos de Estrutura e Dados; Compreender o que são, como.
AULA 09 PROGRAMAÇÃO I. Estruturas de Dados Heterogêneas 10/08/2010 Programação I 2 Objetivo: Estudar os tipos de dados heterogêneos:  Registros;  Arrays.
Estrutura de Dados Aula 3 - Listas
Estrutura de dados Pilhas e filas
Ponteiros. Programação II Professora: Mai-Ly vanessa horário: ter 9h-11h; sex 11h-13h Aula 1.
Profa. Juliana Mafra ESTRUTURA DE DADOS 30 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco.
Computadores vs. Programas / Algoritmos Computadores vs. Programas -> Algoritmos O tratamento de problemas através do computador geralmente envolve uma.
UNIVERSIDADE FEDERAL DO AMAZONAS- UFAM INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA- ICET SISTEMAS DE INFORMAÇÃO ALGORITMOS E ESTRUTURAS DE DADOS II PILHAS.
Pilha dinâmica Prof.° Jean Daniel Henri Merlin Andreazza
Estrutura de Dados Prof. André Cypriano M. Costa
UNIVERSIDADE FEDERAL DE MINAS GERAIS Pilhas e Filas Cristiano Arbex Valle Vinicius Fernandes dos Santos
1 Bibliografia 1. WIRTH, Niklaus. Algoritmos e estruturas de dados. 2. TENEMBAUM, Aaron. Estruturas de Dados usando C. 3. MORAES, Celso. Estruturas de.
Transcrição da apresentação:

Prof Ulisses Vasconcelos ESTRUTURA DE DADOS AULA 02 - PILHA Conceito Inserção Remoção

Prof Ulisses Vasconcelos AULA 02 - PILHA Conceito Inserção Remoção

Prof Ulisses Vasconcelos CONCEITO Pilhas: São estruturas de dados dinâmicas que possui duas regiões conhecidas como topo e base (ou fundo). Inserção (LIFO): Os itens sempre são inseridos no topo da pilha Remoção(LIFO): Os itens sempre são retirados do topo da pilha Estrutura dinâmica: Comprimento variável O único elemento que se tem acesso é o elemento que está no topo A base é o primeiro elemento que foi inserido na pilha O topo é o ultimo elemento que foi inserido na pilha

Prof Ulisses Vasconcelos CONCEITO Funcionamento de pilha utilizando vetores: Pilha cheia Pilha vazia Vetores possuem um espaço limitado para armazenamento de dados. Necessitamos definir um espaço grande o suficiente para a nossa pilha. Necessitamos de um indicador (sentinela) de qual elemento do vetor é o atual topo da pilha.

Prof Ulisses Vasconcelos CONCEITO Funcionamento de pilha utilizando vetores: Declaração da pilha const max = 50; var pilha : record topo : Byte; dados = ARRAY [1..max] OF Integer end;

Prof Ulisses Vasconcelos CONCEITO Operações Colocar (PUSH) itens na pilha Retirar (POP) itens da pilha Obtêm o elemento do topo (TOP) da pilha Verificar se a pilha está cheia Verificar se a pilha está vazia Iniciar ou limpar a pilha Erros possíveis Estouro de pilha (overflow): Tentar inserir em pilha cheia Underflow tentar acessar/excluir um item de uma pilha vazia

Prof Ulisses Vasconcelos CONCEITO Implementação de funcionalidades de uma pilha: Iniciação Procedure Init(var P:pilha); Begin P.topo:=-1; End;

Prof Ulisses Vasconcelos CONCEITOS Verifica se a pilha é vazia Function IsEmpty(var P:pilha):boolean; Begin if P.topo = -1 then IsEmpty:=true else IsEmpty:=false End;

Prof Ulisses Vasconcelos CONCEITOS Verifica se a pilha está cheia Function IsFull(var P:pilha):boolean; Begin if P.topo=max then IsFull:=true else IsFull:=false End;

Prof Ulisses Vasconcelos Inserção Inserção em pilha de array Procedure Push(var P:pilha; x:char); Begin if not IsFull(P) then begin P.topo:=P.topo + 1; P.dados[P.topo]:= x end else writeln(´Pilha Cheia!´) End;  Verificação para evitar overflow

Prof Ulisses Vasconcelos Exclusão Exclusão em pilha de array Function Pop(var P:pilha):char; Begin if not IsEmpty(P) then begin Pop:=P.dados[P.topo]; P.topo:=P.topo - 1; end else writeln(´Pilha Vazia!´) End;  Verificação para evitar underflow

Prof Ulisses Vasconcelos Pilhas de Ponteiros Criação da pilha usando ponteiros type apontador = ^celula; celula = record item:integer; prox:apontador; end; tipopilha=record fundo:apontador; topo:apontador; end;

Prof Ulisses Vasconcelos Célula celula = record item:integer; prox:apontador; end; Prox Item item: Variável que recebe valores inteiros prox: Apontador que aponta para um registro do tipo célula Declaração: Var c1 : celula; Utilização c1.item := 3; c1.prox :=

Prof Ulisses Vasconcelos Pilha tipopilha=record fundo:apontador; topo:apontador; end; Topo Fundo Célula fundo: Apontador que aponta para um registro do tipo célula topo: Apontador que aponta para um registro do tipo célula Ref. 0Ref. 1 Ref. 0 Ref. 1

Prof Ulisses Vasconcelos Pilhas de ponteiros Inicia pilha procedure iniciapilha(var pilha:tipopilha); var aux:apontador; begin new (aux); pilha.fundo:=aux; pilha.topo:=pilha.fundo; pilha.topo^.prox :=nil; end;

Prof Ulisses Vasconcelos procedure iniciapilha(var pilha:tipopilha); var aux:apontador; begin new (aux); pilha.fundo:=aux; pilha.topo:=pilha.fundo; pilha.topo^.prox :=nil; end; Prox Item aux Topo Fundo Ref. 0 { NIL

Prof Ulisses Vasconcelos Pilhas de ponteiros Verifica se está vazia function vazia(pilha:tipopilha):boolean; begin vazia:=pilha.fundo = pilha.topo; end;

Prof Ulisses Vasconcelos Pilhas de ponteiros Inserção procedure inserir(x:integer;var pilha:tipopilha); var aux:apontador; begin new (aux); pilha.topo^.prox:=aux; aux^.prox := nil; aux^.item :=x; pilha.topo := aux; end;

Prof Ulisses Vasconcelos procedure inserir(x:integer;var pilha:tipopilha); var aux:apontador; begin new (aux); pilha.topo^.prox:=aux; aux^.prox := nil; aux^.item :=x; pilha.topo := aux; end; Prox Item aux Ref. 1 Prox Item Topo Fundo Ref. 0 NIL Ref. 1 NIL Ref. 1

Prof Ulisses Vasconcelos Pilhas de ponteiros Exclusão procedure retirai(var x:integer; var pilha:tipopilha); var aux:apontador; begin aux:= pilha.fundo^.prox; x:=aux^.item; pilha.fundo^.prox := aux^.prox; if(pilha.fundo^.prox = nil ) then pilha.topo := pilha.fundo; dispose(aux); end;

Prof Ulisses Vasconcelos procedure retirai(var pilha:tipopilha); var aux:apontador; begin aux:= pilha.fundo^.prox; pilha.fundo^.prox := aux^.prox; if(pilha.fundo^.prox = nil ) then pilha.topo := pilha.fundo; dispose(aux); end; Prox Item Ref. 1 Prox Item Topo Fundo Ref. 0 Ref. 1 NIL 3 Ref. 1 Valor de aux: Ref. 1 NIL Ref. 0

Prof Ulisses Vasconcelos Pilhas de ponteiros Exclusão procedure retirar(var x:integer; var pilha:tipopilha); var aux:apontador; begin if ( pilha.fundo^.prox^.prox = nil ) then retirai(x,pilha) else begin aux:=pilha.fundo^.prox; while (aux^.prox <>pilha.topo) do aux :=aux^.prox; pilha.topo :=aux; aux:=aux^.prox; x:=aux^.item; pilha.topo^.prox:=nil; dispose(aux); end; end;

Prof Ulisses Vasconcelos procedure retirar(var pilha:tipopilha); var aux:apontador; begin if ( pilha.fundo^.prox^.prox = nil ) then retirai(pilha) else begin aux:=pilha.fundo^.prox; while (aux^.prox <>pilha.topo) do aux :=aux^.prox; pilha.topo :=aux; aux:=aux^.prox; pilha.topo^.prox:=nil; dispose(aux); end; end; Ref. 1 Prox Item Topo Fundo Ref. 0 Ref. 1 Ref. 2 3 NIL 5 Valro de aux: Ref. 1 Valro de aux: Ref. 2 NIL