A2 TADS4 Estrutura De Dados Teleaula 3 Tema 3 Impressao
1238 palavras
5 páginas
15/09/2014Estrutura de Dados
Tema 3: Pilhas.
O que é uma pilha (stack)
Um conjunto de itens dispostos linearmente, onde a remoção e a inserção de itens acontecem sempre pela mesma extremidade, chamada topo.
R
H
E
A
topo
topo
1
4
5
9
Características de uma pilha
• É um objeto dinâmico, compreendendo a possibilidade de inserção e remoção de elementos sucessivamente;
• Não há limite de tamanho;
• Fornece acesso apenas ao elemento localizado no topo;
• Chamada de lista LIFO
(last in first out)
1
15/09/2014
Analisando uma pilha graficamente
Inserir os elementos A, B, K, O, P na pilha 1
Inserir os elementos D, L,
P na pilha 2
Analisando uma pilha graficamente
Remover os elementos da pilha
H
E
A
topo
Pilha como um Tipo de Dado Abstrato
Características:
•Conjunto de elementos;
•Topo para indicar último elemento inserido
Operações:
•Inserir novo elemento -push
•Remover elemento -pop
•Obter elemento do topo
-stacktop
•Verificar se pilha está vazia -empty
2
15/09/2014
Funções Empty e Push abstract empty(pilha)
SE tem algum elemento no topo retorne
FALSE
SENÃO retorne TRUE fim empty abstract push(pilha, el) pilha ← el + pilha atualiza topo fim push
Função Stacktop abstract stacktop(pilha)
SE empty(pilha) = TRUE retorne “Erro”
SENÃO retorne elemento do topo fim stacktop
Função Pop abstract pop(pilha) aux ← pilha(topo) pilha ← pilha – pilha(topo) atualiza topo retorne aux fim pop
3
15/09/2014
Representando uma pilha em C usando vetor
#define TAM 100 struct pilha { char itens[TAM]; int topo;
};
... struct pilha p;
p.topo = -1;
Continuando
Tema 3: Pilhas.
Implementando uma Pilha em C
(vetor)
#include <stdio.h>
#include <stdlib.h>
#define TAM 100 struct pilha { char itens[TAM]; int topo;
};
4
15/09/2014
void push(struct pilha *p, int el) { if (p->topo == TAM-1) //pilha cheia exit(1); else { p->topo = p->topo + 1; p->itens[p->topo] = el;
}
}
int empty(struct pilha *p) { if (p->topo == -1) return true; else return false;
}
int stacktop(struct pilha