listas lineares listas lineares pilha fila fila dupla entrada restrita saída restrita

11
Listas lineares Listas Lineares Pilha Fila Fila Dupla Entrada restrita Saída restrita

Upload: internet

Post on 17-Apr-2015

135 views

Category:

Documents


17 download

TRANSCRIPT

Page 1: Listas lineares Listas Lineares Pilha Fila Fila Dupla Entrada restrita Saída restrita

Listas lineares

Listas Lineares

Pilha Fila Fila Dupla

Entrada restrita Saída restrita

Page 2: Listas lineares Listas Lineares Pilha Fila Fila Dupla Entrada restrita Saída restrita

Listas linearesConjunto de elementos (nós) agrupados. Algumas Operações:

• Acesso a um determinado elemento

• Inserção de elementos

• Remoção de elementos

• Cópia de listas

• Combinação de listas

• Particionamento de listas

• Ordenação de listas

• Outras ...

Page 3: Listas lineares Listas Lineares Pilha Fila Fila Dupla Entrada restrita Saída restrita

Listas lineares

Alocação:

• Estática: durante compilação.

• Dinâmica: durante execução.Agrupamento:

• Seqüêncial: espaço contínuo de memória

• Encadeada: células dispersas na memória

Page 4: Listas lineares Listas Lineares Pilha Fila Fila Dupla Entrada restrita Saída restrita

Pilha

BASE

TOPO

SAÍDA

ENTRADA

Elemento 1

Elemento 2

Page 5: Listas lineares Listas Lineares Pilha Fila Fila Dupla Entrada restrita Saída restrita

Pilha

Operações primitivas:

• Inicializar a pilha: prepara a pilha para utilização, sem nenhum elemento.• Pilha Vazia: verifica se a pilha está vazia.• Pilha Cheia: verifica se a pilha está cheia.• Empilha Elemento: insere um elemento no topo da pilha.• Desempilha: retira o elemento do topo da pilha. • Topo: retorna o elemento do topo da pilha.

Page 6: Listas lineares Listas Lineares Pilha Fila Fila Dupla Entrada restrita Saída restrita

Pilhas – Implementação (alocação dinâmica, agrupamento seqüencial)

Atributos necessários para armazenar dados da classe:

• um vetor que armazenará os elementos empilhados

• uma variável de controle com a posição do topo da pilha

e uma com o número máximo de elementos da pilha.

public class Pilha{

private object [] elementos;private int topo, max;

...

Page 7: Listas lineares Listas Lineares Pilha Fila Fila Dupla Entrada restrita Saída restrita

Pilhas – Implementação (alocação dinâmica, agrupamento seqüencial)

• O vetor de elementos é do tipo object para que qualquer

objeto possa ser empilhado.

• Os atributos são privados pois os usuários da classe

não devem acessá-los diretamente, somente através dos

métodos de empilhar, desempilhar etc.

public class Pilha{

private object [] elementos;private int topo, max;

...

Page 8: Listas lineares Listas Lineares Pilha Fila Fila Dupla Entrada restrita Saída restrita

Pilhas – Implementação (alocação dinâmica, agrupamento seqüencial)

A inicialização da pilha é feita no seu construtor. Nesse momento, o usuário da classe deve informar a quantidade máxima de elementos para a alocação dinâmica.

public class Pilha{...

public Pilha(int maximo){

max = maximo;elementos = new object[max];topo = 0;

}...

Page 9: Listas lineares Listas Lineares Pilha Fila Fila Dupla Entrada restrita Saída restrita

Pilhas – Implementação (alocação dinâmica, agrupamento seqüencial)

O método para empilhar (Push) deve verificar se a pilha não está cheia, empilhar o elemento no vetor e incrementar o topo.

public class Pilha{...

public void Push(object x){

if (PilhaCheia())throw new Exception(“Pilha Cheia!”);

elementos[topo++] = x;}

...

Page 10: Listas lineares Listas Lineares Pilha Fila Fila Dupla Entrada restrita Saída restrita

Pilhas – Implementação (alocação dinâmica, agrupamento seqüencial)

O método para desempilhar (Pop) deve verificar se a pilha não está vazia, desempilhar o elemento no vetor e decrementar o topo.

public class Pilha{...

public object Pop(){

if (PilhaVazia())throw new Exception(“Pilha Vazia!”);

return elementos[--topo];}

...

Page 11: Listas lineares Listas Lineares Pilha Fila Fila Dupla Entrada restrita Saída restrita

Pilhas – Implementação (alocação dinâmica, agrupamento seqüencial)

• Implemente as funções restantes: pilha vazia, pilha cheia e função topo.

• Simule o funcionamento da pilha com este exemplo de código:

...Pilha p = new Pilha(10);p.Push(1);p.Push(2);p.Push(3);int x = Convert.ToInt32(p.Pop());...