• Nenhum resultado encontrado

Estrutura Abstrata de Dados PILHA

N/A
N/A
Protected

Academic year: 2022

Share "Estrutura Abstrata de Dados PILHA"

Copied!
16
0
0

Texto

(1)

1/16

Estrutura Abstrata de Dados PILHA

Implementação com ligações simples

(com ponteiros e memória dinâmica)

(2)

Conceitos gerais 2/16

Conceitos gerais

Os seus elementos são processados pela ordem inversa à ordem de chegada

- o último elemento a entrar é o primeiro a sair (LIFO - “Last In First Out”) Qualquer operação que se pretenda efetuar será realizada no topo da Pilha

- Inserção de um novo elemento na pilha consiste em

- acrescentar este elemento ao cimo do topo da pilha

- Remoção de um elemento da pilha consiste em

- retirar o elemento que se encontra no topo da pilha

- passando o elemento que está antes, caso exista, a ser o topo de pilha

- Pilha vazia

- acontece quando é removido o último elemento da pilha

- apenas é possível realizar operações de inserção de elementos na pilha

(3)

Operações sobre uma Pilha 3/16

Operações sobre uma Pilha

Criar uma Pilha (vazia): criarPilha(S)

Verificar se uma Pilha está vazia: pilhaVazia(S)

Colocar um elemento X (no topo) de uma Pilha: push(X, S)

Remover um elemento (que está no topo) de uma Pilha: pop(S) Fornecer o elemento do topo de uma Pilha: topo(S)

(4)

Definição axiomática 4/16

Definição axiomática

Estrutura Pilha (INFOP) Declarar

criarPilha() ® Pilha

pilhaVazia(Pilha) ® 1 (verdadeiro) ou 0 (falso) push(INFOP, Pilha) ® Pilha

pop(Pilha) ® Pilha topo(Pilha) ® INFOP

tais que " S Î Pilha, " X Î INFOP, sejam

pilhaVazia(criarPilha()) = 1 (verdadeiro) pilhaVazia(push(X, S)) = 0 (falso)

pop(criarPilha()) = ERRO pop(push(X, S)) = S

topo(criarPilha()) = ERRO topo(push(X, S)) = X

(5)

Representação gráfica 5/16

Representação gráfica

EAD Pilha

Analogia

O identificador S

- é um ponteiro para o topo de uma pilha

(6)

Nodos e ligações 6/16

Nodos e ligações

Declaração

struct NodoPilha { INFOP Elemento;

struct NodoPilha *Ant;

}

typedef struct NodoPilha *PNodoPilha;

Cada nodo aponta para o nodo anterior da pilha O nodo do fundo da pilha aponta para NULL

A memória para os elementos (nodos) é

- atribuída quando um elemento é inserido na pilha - libertada quando um elemento é removido da pilha.

Pilha vazia: quando o topo da pilha é um ponteiro nulo (NULL)

Pilha cheia: quando não há memória para alocar um novo elemento

(7)

Operações sobre a estrutura INFOP 7/16

Operações sobre a estrutura INFOP

Mostrar no monitor os dados associados e um elemento do tipo INFOP void mostrarElementoP (INFOP X)

Criar um elemento do tipo INFOP INFOP criarElementoP ()

Comparar 2 elementos, X e Y, do tipo INFOP

int compararElementosP (INFOP X, INFOP Y)

devolve:

-1, se X < Y 0, se X = Y, e 1, se X > Y

(8)

Criar um nodo de uma Pilha 8/16

Criar um nodo de uma Pilha

Entrada: a informação propriamente dita (elemento X), que fará parte de um nodo Saída: um ponteiro para um nodo com informação (elemento X) e ligação a NULL

PNodoPilha criarNodoPilha (INFOP X) { PNodoPilha P;

P = (PNodoPilha) malloc (sizeof(struct NodoPilha));

if (P == NULL) return NULL;

P®Elemento = X;

P®Ant = NULL;

return P;

}

(9)

Libertar/destruir um nodo de uma Pilha 9/16

Libertar/destruir um nodo de uma Pilha

Entrada: um ponteiro para o nodo que se pretende destruir Saída: o ponteiro a apontar para NULL

PNodoPilha libertarNodoPilha (PNodoPilha P) { P®Ant = NULL;

free(P);

P = NULL;

return P;

}

(10)

Criar uma Pilha 10/16

Criar uma Pilha

Entrada: --

Saída: devolve uma Pilha S vazia (sem elementos)

PNodoPilha criarPilha () { PNodoPilha S;

S = NULL;

return S;

}

(11)

Verificar se uma Pilha está vazia 11/16

Verificar se uma Pilha está vazia

Entrada: uma Pilha S

Saída: 1 (se a Pilha S está vazia) ou 0 (se a Pilha S não está vazia)

int pilhaVazia (PNodoPilha S) { if (S == NULL)

return 1;

else

return 0;

}

(12)

Inserir elemento numa Pilha 12/16

Inserir elemento numa Pilha

Representação gráfica Inicial:

Final: S = push(X, S)

(13)

Inserir elemento numa Pilha 13/16

Função: insere um elemento no topo de uma Pilha (push) Entrada: um elemento X a inserir e uma Pilha S

Saída: a Pilha S atualizada (com mais um elemento)

PNodoPilha push (INFOP X, PNodoPilha S) { PNodoPilha Novo;

Novo = criarNodoPilha(X);

if (Novo == NULL) return S;

Novo®Ant = S;

S = Novo;

return S;

}

(14)

Remover elemento de uma Pilha 14/16

Remover elemento de uma Pilha

Representação gráfica Inicial:

Final: S = pop(S)

(15)

Remover elemento de uma Pilha 15/16

Função: remove o elemento do topo de uma Pilha (pop) Entrada: uma Pilha S

Saída: a Pilha S atualizada (sem o elemento do topo)

PNodoPilha pop (PNodoPilha S) { PNodoPilha P;

P = S;

S = S®Ant;

P = libertarNodoPilha(P);

return S;

}

(16)

Consultar elemento de uma Pilha 16/16

Consultar elemento de uma Pilha

Representação gráfica

topo(S) = 5 (S®Elemento)

Função: consulta o elemento do topo de uma Pilha (topo) Entrada: uma Pilha S

Saída: o elemento que está no topo da Pilha S (do tipo INFOP)

INFOP topo (PNodoPilha S) { return S®Elemento;

}

Referências

Documentos relacionados

alimentares: de crianças menores de seis meses: Aleitamento Materno Exclusivo (AME): nenhum outro alimento é oferecido à criança, além do leite materno; Aleitamento Materno

No projeto, o levantamento florístico identificou mais de 130 espécies medicinais dentro da área de estudo (Estações Ecológica e Experimental de Itirapina).. Para o Guia Ilustrado

A população idosa tem apresentado forte crescimento nas últimas décadas, porém muitos ambientes, produtos e serviços ainda não modificaram seu perfil para suprir

Outras atividades como essa questão podem ser propostas, mas lembramos que não interessa tanto, nesse caso, a realização de muitos cálculos, quanto, por exemplo,

Neste caso, embora possam existir nestes locais, forrageiras de alta qualidade, como o capim-de-capivara (Hymenachne amplexicaulis), a disponibilidade de recursos forrageiros vai

O terceiro momento foi marcado pela visita à escola e a aplicação de questionários para os alunos, com a finalidade de avaliar os conhecimentos prévios dos mesmos,

A experiência acadêmica profissional realizada no ambiente escolar em relação à apresentação das modalidades Paralímpicas e o seu legado na aula de Educação

10 unidades.. Meios de Comunicação | 12 unidades.. Animais Diversos para Colorir | 100. 20 unidades.. Meios de Transportes Animados | 009 12 unidades. interativo) 28